Пример #1
0
 def RecepcionEnvio(self):
     envio = self.xml_envio
     if envio.find('SetDTE/Caratula') is None:
         return True
     recep = self._receipt()
     resp_dtes = util.create_xml({"RecepcionEnvio": recep})
     return util.xml_to_string(resp_dtes)
Пример #2
0
 def Caratula(self):
     if self.Recibos:
         caratula = self._caratula_recep()
     else:
         caratula = self._caratula_respuesta()
     caratula_xml = util.create_xml({'Caratula': caratula})
     caratula_xml.set('version', '1.0')
     return etree.tostring(caratula_xml).decode('ISO-8859-1')
Пример #3
0
 def recibo(self, r):
     receipt = collections.OrderedDict()
     receipt['TipoDoc'] = r.TipoDTE
     receipt['Folio'] = r.Folio
     receipt['FchEmis'] = r.FechaEmis
     receipt['RUTEmisor'] = r._dte_emisor.RUTEmisor
     receipt['RUTRecep'] = r._receptor.RUTRecep
     receipt['MntTotal'] = r.MntTotal
     receipt['Recinto'] = self.Recinto
     receipt['RutFirma'] = self.firma.rut_firmante
     receipt['Declaracion'] = r.Declaracion
     receipt['TmstFirmaRecibo'] = util.time_stamp()
     etree_receipt = util.create_xml({"item": receipt})
     return util.xml_to_string(etree_receipt)
Пример #4
0
 def validar(self):
     Resumen = []
     listado = [
         'TipoDocumento', 'MntNeto', 'MntIva', 'TasaIVA', 'MntExento',
         'MntTotal', 'FoliosEmitidos', 'FoliosAnulados', 'FoliosUtilizados',
         'itemUtilizados'
     ]
     TpoDocs = []
     if self.Documento:
         resumenes = self._get_resumenes()
         for r, value in resumenes.items():
             if not str(r) in TpoDocs:
                 TpoDocs.append(str(r))
             ordered = collections.OrderedDict()
             for i in listado:
                 if i in value:
                     ordered[i] = value[i]
                 elif i == 'itemUtilizados':
                     Rangos = value['T' + str(r)]
                     folios = []
                     if 'itemUtilizados' in Rangos:
                         utilizados = []
                         for rango in Rangos['itemUtilizados']:
                             utilizados.append({'RangoUtilizados': rango})
                         folios.append({'itemUtilizados': utilizados})
                     if 'itemAnulados' in Rangos:
                         anulados = []
                         for rango in Rangos['itemAnulados']:
                             anulados.append({'RangoAnulados': rango})
                         folios.append({'itemAnulados': anulados})
                     ordered['T' + str(r)] = folios
             Resumen.append({'Resumen': ordered})
         dte = {'item': Resumen}
         etree_xml = util.create_xml(dte)
         sii_xml_request = util.xml_to_string(etree_xml)
         for TpoDoc in TpoDocs:
             sii_xml_request = sii_xml_request.replace(b'<T%s>' % str(TpoDoc), b'')\
             .replace(b'</%s>' % str(TpoDoc), '\n').replace(b'<T%s/>' % str(TpoDoc), b'\n')
         self.sii_xml_request = sii_xml_request
     return True
Пример #5
0
 def gen_validacion_comercial(self):
     _r = []
     for r in self.DTEs:
         _r.append({'ResultadoDTE': self.resultado(r)})
     resp_dtes = util.create_xml({'item': _r})
     self.Resultados = util.xml_to_string(resp_dtes)
Пример #6
0
 def validar(self):
     resumenes = []
     resumenesPeriodo = {}
     resumenPeriodo = {}
     for rec in self.Documento:
         rec.sended = True
         TpoDoc = rec.TipoDTE
         if TpoDoc not in resumenesPeriodo and self.TipoOperacion != 'GUIA':
             resumenesPeriodo[TpoDoc] = {}
         if self.TipoOperacion == 'BOLETA':
             resumen = self.getResumenBoleta(rec)
             resumenesPeriodo[TpoDoc] = self._setResumenPeriodoBoleta(
                                 resumen, resumenesPeriodo[TpoDoc])
             del(resumen['MntNeto'])
             del(resumen['MntIVA'])
             del(resumen['TasaIVA'])
         elif self.TipoOperacion == 'GUIA':
             resumen = self.getResumenGuia(rec)
             resumenes.extend([{'Detalle': resumen}])
             resumenPeriodo = self._setResumenPeriodoGuias(
                                 resumen, resumenPeriodo)
         else:
             resumen = self.getResumen(rec)
             resumenes.extend([{'Detalle': resumen}])
         if self.TipoOperacion not in ['BOLETA', 'GUIA']:
             resumenesPeriodo[TpoDoc] = self._setResumenPeriodo(
                                 resumen, resumenesPeriodo[TpoDoc])
     if self.boletas:  # no es el libro de boletas especial
         for boletas in self.boletas:
             resumenesPeriodo[boletas.TipoDTE] = {}
             resumen = self._setResumenBoletas(boletas)
             del(resumen['TotDoc'])
             resumenesPeriodo[boletas.TipoDTE] = self._setResumenPeriodo(
                                 resumen, resumenesPeriodo[boletas.TipoDTE])
             # resumenes.extend([{'Detalle':resumen}])
     lista = ['TpoDoc', 'TpoImp', 'TotDoc', 'TotAnulado', 'TotMntExe',
              'TotMntNeto', 'TotalesServicio', 'TotOpIVARec',
              'TotMntIVA', 'TotMntIVA', 'TotOpActivoFijo',
              'TotMntActivoFijo', 'TotMntIVAActivoFijo', 'TotIVANoRec',
              'TotOpIVAUsoComun', 'TotIVAUsoComun', 'FctProp',
              'TotCredIVAUsoComun', 'itemOtrosImp', 'TotImpSinCredito',
              'TotIVARetTotal', 'TotIVARetParcial', 'TotMntTotal',
              'TotIVANoRetenido', 'TotTabPuros', 'TotTabCigarrillos',
              'TotTabElaborado', 'TotImpVehiculo', 'TotFolAnulado',
              'TotGuiaAnulada', 'TotGuiaVenta', 'TotMntGuiaVta',
              'TotMntModificado', 'itemTraslado']
     ResumenPeriodo = []
     dte = collections.OrderedDict()
     for r, value in resumenesPeriodo.items():
         total = collections.OrderedDict()
         for v in lista:
             if v in value:
                 total[v] = value[v]
         ResumenPeriodo.extend([{'TotalesPeriodo': total}])
         #dte['ResumenPeriodo'] = ResumenPeriodo
         #dte_etree = util.create_xml({'item': dte})
         #util.create_xml(resumenes, dte_etree)
     if self.TipoOperacion == 'GUIA':
         ResumenPeriodo = collections.OrderedDict()
         for f in lista:
             if f in resumenPeriodo:
                 ResumenPeriodo[f] = resumenPeriodo[f]
     dte['ResumenPeriodo'] = ResumenPeriodo
     dte['item'] = resumenes
     dte['TmstFirma'] = util.time_stamp()
     dte_etree = util.create_xml({'item': dte})
     self.sii_xml_request = util.xml_to_string(dte_etree)
     return True
Пример #7
0
 def _dte_to_xml(self, dte, tpo_dte="Documento"):
     #ted = dte[tpo_dte + ' ID']['TEDd']
     #dte[(tpo_dte + ' ID')]['TEDd'] = ''
     xml = util.create_xml(dte)
     return xml