def _get_periodes_reactiva(self, lect_activa, lect_reactiva): """Retorna una llista de noms de periode que tenen excés de reactiva """ agrupat = INFO_TARIFA[self.codi_tarifa]['agrupat'] if len(lect_activa) < len(lect_reactiva): msg = _('Menor nombre de periodes en les lectures d\'activa '\ 'que en reactiva. No és possible calcular els excessos '\ 'de reactiva.') raise except_f1('Error', msg) if agrupat: lect_activa = aggr_consums(lect_activa) lect_reactiva = aggr_consums(lect_reactiva) periodes = lect_reactiva.keys() periodes.sort() calc = {} marge = INFO_TARIFA[self.codi_tarifa]['marge'] try: for i in periodes: activa = lect_activa[i] reactiva = lect_reactiva[i] val = float("%.2f" % exces_reactiva(activa, reactiva, marge)) # Comprovem que hi ha accés de reactiva i que el període en # el que estem es pot facturar la reactiva if val > 0 and i in INFO_TARIFA[self.codi_tarifa]['reactiva']: calc[i] = val return calc except KeyError, e: msg = _('No s\'ha trobat el periode \'%s\' en les lectures '\ ' d\'activa') % e[0] raise except_f1('Error', msg)
def get_periodes_reactiva(self, lectures): """Retorna una llista de noms de periode que tenen excés de reactiva """ agrupat = INFO_TARIFA[self.codi_tarifa]['agrupat'] lect_activa = self.select_consum_from_lectures(lectures, 'A') lect_reactiva = self.select_consum_from_lectures(lectures, 'R') if len(lect_activa) < len(lect_reactiva): msg = _('Menor nombre de periodes en les lectures d\'activa '\ 'que en reactiva. No és possible calcular els excessos '\ 'de reactiva.') raise except_f1('Error', msg) if agrupat: lect_activa = tarifes.aggr_consums(lect_activa) lect_reactiva = tarifes.aggr_consums(lect_reactiva) periodes = lect_reactiva.keys() periodes.sort() calc = {} marge = INFO_TARIFA[self.codi_tarifa]['marge'] try: for i in periodes: activa = lect_activa[i] reactiva = lect_reactiva[i] val = float("%.2f" % tarifes.exces_reactiva(activa, reactiva, marge)) # Comprovem que hi ha accés de reactiva i que el període en # el que estem es pot facturar la reactiva if val > 0 and i in INFO_TARIFA[self.codi_tarifa]['reactiva']: calc[i] = val return calc except KeyError, e: msg = _('No s\'ha trobat el periode \'%s\' en les lectures '\ ' d\'activa') % e[0] raise except_f1('Error', msg)
def __init__(self, ref, parcial): self.ref = ref self._import_parcial = parcial.get(self.ref.Tipo.text, False) if not self._import_parcial: msg = _(u'No s\'ha trobat el valor de refacturació parcial ' u'(ConceptoIVA) amb tipus %s.') % self.ref.Tipo.text raise except_f1('Error', msg)
def cups(self): tree = '{0}.cups'.format(self._header) data = get_rec_attr(self.obj, tree, False) if data not in [None, False]: return data.text else: raise except_f1('Error', u'Documento sin código')
def get_codi_destinatari(self): try: ref = self.head.destinycompany.text except: try: ref = self.head.empresadestino.text except: pass if not ref: raise except_f1('Error', u'Documento sin destinatario') return ref
def get_codi_emisor(self): try: ref = self.head.dispatchingcompany.text except: try: ref = self.head.empresaemisora.text except: pass if not ref: raise except_f1('Error', u'Documento sin emisor') return ref
def data_sollicitud(self): try: ref = self.head.communicationsdate.text ref2 = self.head.communicationshour.text.split(".")[0] except: try: ref = self.head.fechacomunic.text ref2 = self.head.horacomunic.text.split(".")[0] except: pass if not ref: raise except_f1('Error', u'Documento sin fecha de solicitud') return ref + " " + ref2
def get_parcials_refacturacio(self): """Parcials de refacturacio""" parcial = {} for val in self.factura.ConceptoIVA: try: tipus = val.Concepto.text except AttributeError: continue if not tipus in parcial: parcial.update({tipus: float(val.ImporteConceptoIVA.text)}) else: msg = _(u'Existeix més d\'un valor de refacturació parcial ' u'(ConceptoIVA) amb tipus %s.') % tipus raise except_f1('Error', msg) return parcial
def codi_sollicitud(self): if self.tipus == 'B70': return "" tree = '{0}.comreferencenum'.format(self._header) data = get_rec_attr(self.obj, tree, False) if data not in [None, False]: return data.text else: tree = '{0}.reqcode'.format(self._header) data = get_rec_attr(self.obj, tree, False) if data not in [None, False]: return data.text if self.processcode == '26': tree = '{0}.atrcode'.format(self._header) data = get_rec_attr(self.obj, tree, False) if data not in [None, False]: return data.text raise except_f1('Error', u'Documento sin código de solicitud')
def set_tipus(self): """Definir tipo del mensaje""" try: # Per mantenir compatibilitat utilitzem els mateixos atributs que en # electricitat peró per seguir amb l'estandard de utilizar els noms # dels XMLs els copiem a nous atributs self.tipus = self.head.processcode.text self.processcode = self.tipus self.pas = self.head.messagetype.text self.messagetype = self.pas except: try: self.tipus = self.head.codtipomensaje.text self.codtipomensaje = self.tipus self.pas = self.head.codproceso.text self.codproceso = self.pas except: msg = u'No se puede identificar el código de proceso ' \ u'o código de paso' raise except_f1('Error', msg)