示例#1
0
 def _validar(self):
     datos = self._get_datos_empresa(self.company_id)
     grupos = {}
     recs = self._get_moves()
     for r in recs:
         grupos.setdefault(r.document_class_id.sii_code, [])
         grupos[r.document_class_id.sii_code].append(r)
     for anulaciones in self.anulaciones:
         raise UserError("terminar código anulaciones manuales")
         grupos.setdefault(r.document_class_id.sii_code, [])
         grupos[r.document_class_id.sii_code].append(r)
     datos['ConsumoFolios'] = {
         "FchInicio": self.fecha_inicio,
         "FchFinal": self.fecha_final,
         "SecEnvio": self.sec_envio,
         "Correlativo": self.correlativo,
         "Documento": [{'TipoDTE': k, 'documentos': v} for k, v in grupos.items()]
     }
     datos['test'] = True
     result = fe.libro(datos)[0]
     envio_dte = result['sii_xml_request']
     doc_id = '%s_%s' % (self.tipo_operacion, self.periodo_tributario)
     self.sii_xml_request = self.env['sii.xml.envio'].create({
         'xml_envio': envio_dte,
         'name': doc_id,
         'company_id': self.company_id.id,
     }).id
示例#2
0
 def _validar(self):
     datos = self._get_datos_empresa(self.company_id)
     grupos = {}
     recs = self.with_context(lang='es_CL').move_ids
     for rec in recs:
         grupos.setdefault(rec.document_class_id.sii_code, [])
         grupos[rec.document_class_id.sii_code].append(rec._dte())
     datos['Libro'] = {
         "PeriodoTributario":
         self.periodo_tributario,
         "TipoOperacion":
         'GUIA',
         "TipoLibro":
         self.tipo_libro,
         "FolioNotificacion":
         self.folio_notificacion,
         "TipoEnvio":
         self.tipo_envio,
         "Documento": [{
             'TipoDTE': k,
             'documentos': v
         } for k, v in grupos.items()]
     }
     datos['test'] = True
     result = fe.libro(datos)
     envio_dte = result['sii_xml_request']
     doc_id = '%s_%s' % ('GUIA', self.periodo_tributario)
     self.sii_xml_request = self.env['sii.xml.envio'].create({
         'xml_envio':
         envio_dte,
         'name':
         doc_id,
         'company_id':
         self.company_id.id,
     }).id
示例#3
0
 def _validar(self):
     datos = self._get_datos_empresa(self.company_id)
     grupos = {}
     boletas = []
     recs = self._get_moves()
     for r in recs:
         grupos.setdefault(r.document_class_id.sii_code, [])
         grupos[r.document_class_id.sii_code].append(r.with_context(tax_detail=True)._dte())
     for b in self.boletas:
         boletas.append(b._dte())
     datos['Libro'] = {
         "PeriodoTributario": self.periodo_tributario,
         "TipoOperacion": self.tipo_operacion,
         "TipoLibro": self.tipo_libro,
         "FolioNotificacion": self.folio_notificacion,
         "TipoEnvio": self.tipo_envio,
         "CodigoRectificacion": self.codigo_rectificacion,
         "Documento": [{'TipoDTE': k, 'documentos': v} for k, v in grupos.items()],
         'FctProp': self.fact_prop,
         'boletas': boletas,
     }
     datos['test'] = True
     result = fe.libro(datos)
     envio_dte = result['sii_xml_request']
     doc_id = '%s_%s' % (self.tipo_operacion, self.periodo_tributario)
     self.sii_xml_request = self.env['sii.xml.envio'].create({
         'xml_envio': envio_dte,
         'name': doc_id,
         'company_id': self.company_id.id,
     }).id
示例#4
0
 def _validar(self):
     datos = self._get_datos_empresa(self.company_id)
     grupos = {}
     boletas = []
     recs = self._get_moves()
     for r in recs:
         grupos.setdefault(r.document_class_id.sii_code, [])
         grupos[r.document_class_id.sii_code].append(
             r.with_context(tax_detail=True)._dte())
     for b in self.boletas:
         boletas.append(b._dte())
     datos["Libro"] = {
         "PeriodoTributario":
         self.periodo_tributario,
         "TipoOperacion":
         self.tipo_operacion,
         "TipoLibro":
         self.tipo_libro,
         "FolioNotificacion":
         self.folio_notificacion,
         "TipoEnvio":
         self.tipo_envio,
         "CodigoRectificacion":
         self.codigo_rectificacion,
         "Documento": [{
             "TipoDTE": k,
             "documentos": v
         } for k, v in grupos.items()],
         "FctProp":
         self.fact_prop,
         "boletas":
         boletas,
     }
     datos["test"] = True
     result = fe.libro(datos)
     envio_dte = result["sii_xml_request"]
     doc_id = "{}_{}".format(self.tipo_operacion, self.periodo_tributario)
     self.sii_xml_request = (self.env["sii.xml.envio"].create({
         "xml_envio":
         envio_dte,
         "name":
         doc_id,
         "company_id":
         self.company_id.id,
     }).id)
示例#5
0
 def _validar(self):
     datos = self._get_datos_empresa(self.company_id)
     grupos = {}
     recs = self._get_moves()
     for r in recs:
         grupos.setdefault(r['Encabezado']['IdDoc']['TipoDTE'], [])
         grupos[r['Encabezado']['IdDoc']['TipoDTE']].append(r)
     for boletas in self.boletas:
         resumenesPeriodo[boletas.tipo_boleta.id] = {}
         resumen = self._setResumenBoletas(boletas)
     datos['Libro'] = {
         "PeriodoTributario":
         self.periodo_tributario,
         "TipoOperacion":
         self.tipo_operacion,
         "TipoLibro":
         self.tipo_libro,
         "FolioNotificacion":
         self.folio_notificacion,
         "TipoEnvio":
         self.tipo_envio,
         "CodigoRectificacion":
         self.codigo_rectificacion,
         "Documento": [{
             'TipoDTE': k,
             'documentos': v
         } for k, v in grupos.items()],
         'FctProp':
         self.fact_prop,
     }
     datos['test'] = True
     result = fe.libro(datos)
     envio_dte = result['sii_xml_request']
     doc_id = '%s_%s' % (self.tipo_operacion, self.periodo_tributario)
     self.sii_xml_request = self.env['sii.xml.envio'].create({
         'xml_envio':
         envio_dte,
         'name':
         doc_id,
         'company_id':
         self.company_id.id,
     }).id
示例#6
0
 def do_dte_send(self, n_atencion=''):
     if self.sii_xml_request and self.sii_xml_request.state == "Rechazado":
         self.sii_xml_request.unlink()
         self._validar()
         self.sii_xml_request.state = 'NoEnviado'
     if self.state in ['NoEnviado', 'EnCola']:
         envio_id = self.sii_xml_request
         datos = self._get_datos_empresa(self.company_id)
         datos.update({
             'Libro': {
                 "PeriodoTributario": self.periodo_tributario,
                 "TipoOperacion": self.tipo_operacion,
                 "TipoLibro": self.tipo_libro,
                 "TipoEnvio": self.tipo_envio,
             },
             'sii_xml_request':
             envio_id.xml_envio.replace(
                 '''<?xml version="1.0" encoding="ISO-8859-1"?>\n''', ''),
             'ID':
             envio_id.name,
         })
         result = fe.libro(datos)
         envio = {
             'xml_envio': result['sii_xml_request'],
             'name': result['sii_send_filename'],
             'company_id': self.company_id.id,
             'user_id': self.env.uid,
             'sii_send_ident': result.get('sii_send_ident'),
             'sii_xml_response': result.get('sii_xml_response'),
             'state': result.get('sii_result'),
         }
         if not envio_id:
             envio_id = self.env['sii.xml.envio'].create(envio)
             for i in self:
                 i.sii_xml_request = envio_id.id
                 i.state = 'Enviado'
         else:
             envio_id.write(envio)
     return self.sii_xml_request
示例#7
0
 def do_dte_send(self, n_atencion=""):
     if self.sii_xml_request and self.sii_xml_request.state == "Rechazado":
         self.sii_xml_request.unlink()
         self._validar()
         self.sii_xml_request.state = "NoEnviado"
     if self.state in ["NoEnviado", "EnCola"]:
         envio_id = self.sii_xml_request
         datos = self._get_datos_empresa(self.company_id)
         datos.update({
             "Libro": {
                 "PeriodoTributario": self.periodo_tributario,
                 "TipoOperacion": self.tipo_operacion,
                 "TipoLibro": self.tipo_libro,
                 "TipoEnvio": self.tipo_envio,
             },
             "sii_xml_request":
             envio_id.xml_envio.replace(
                 """<?xml version="1.0" encoding="ISO-8859-1"?>\n""", ""),
             "ID":
             envio_id.name,
         })
         result = fe.libro(datos)
         envio = {
             "xml_envio": result["sii_xml_request"],
             "name": result["sii_send_filename"],
             "company_id": self.company_id.id,
             "user_id": self.env.uid,
             "sii_send_ident": result.get("sii_send_ident"),
             "sii_xml_response": result.get("sii_xml_response"),
             "state": result.get("sii_result"),
         }
         if not envio_id:
             envio_id = self.env["sii.xml.envio"].create(envio)
             for i in self:
                 i.sii_xml_request = envio_id.id
                 i.state = "Enviado"
         else:
             envio_id.write(envio)
     return self.sii_xml_request
示例#8
0
    def _validar(self):
        util_model = self.env['odoo.utils']
        fecha_inicio = fields.Date.to_date(self.periodo_tributario + "-01")
        fecha_fin = fecha_inicio + relativedelta(day=1, days=-1, months=1)
        date_start = util_model._change_time_zone(
            fields.Datetime.to_datetime(self.periodo_tributario + "-01"))
        date_end = util_model._change_time_zone(
            fields.Datetime.to_datetime(self.periodo_tributario +
                                        "-01 23:59:59") +
            relativedelta(day=1, days=-1, months=1))
        if self.tipo_operacion != 'COMPRA' and self.check_folios_duplicity(
                fecha_inicio, fecha_fin, date_start, date_end):
            raise UserError(
                u"Hay folios repetidos, primero regularice eso, contacte con su administrador"
            )
        datos = self._get_datos_empresa(self.company_id)
        grupos = {}
        boletas = []
        recs = sorted(
            self._get_moves(),
            key=lambda r:
            f"{r.document_class_id.sii_code}_{r.sii_document_number}")
        self.move_ids.write({'sended': True})
        for r in recs:
            grupos.setdefault(r.document_class_id.sii_code, [])
            grupos[r.document_class_id.sii_code].append(
                r.with_context(tax_detail=True)._dte(is_for_libro=True))


#         for b in self.boletas:
#             boletas.append(b._dte())
        datos['Libro'] = {
            "PeriodoTributario":
            self.periodo_tributario,
            "TipoOperacion":
            self.tipo_operacion,
            "TipoLibro":
            self.tipo_libro,
            "FolioNotificacion":
            self.folio_notificacion,
            "TipoEnvio":
            self.tipo_envio,
            "CodigoRectificacion":
            self.codigo_rectificacion,
            "Documento": [{
                'TipoDTE': k,
                'documentos': v
            } for k, v in grupos.items()],
            'FctProp':
            self.fact_prop,
            'boletas':
            boletas,
        }
        datos['test'] = True
        result = fe.libro(datos)
        envio_dte = result['sii_xml_request']
        doc_id = '%s_%s' % (self.tipo_operacion, self.periodo_tributario)
        self.sii_xml_request = self.env['sii.xml.envio'].create({
            'xml_envio':
            envio_dte,
            'name':
            doc_id,
            'company_id':
            self.company_id.id,
        }).id