예제 #1
0
 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)
예제 #2
0
 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)
예제 #3
0
 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)
예제 #4
0
 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')
예제 #5
0
 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)
예제 #6
0
 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
예제 #7
0
 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
예제 #8
0
 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
예제 #9
0
 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
예제 #10
0
 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
예제 #11
0
 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')
예제 #12
0
 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)