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)
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')
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)
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
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)
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
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