コード例 #1
0
ファイル: sii_dte_claim.py プロジェクト: javbvier/l10n_cl_fe
 def do_reject(self):
     inv_obj = self.env['account.invoice']
     id_seq = self.env.ref('l10n_cl_fe.response_sequence')
     IdRespuesta = id_seq.next_by_id()
     NroDetalles = 1
     doc = self.invoice_id
     tipo = "account.invoice"
     if not doc:
         tipo = 'mail.message.dte.document'
         doc = self.document_id
     datos = doc._get_datos_empresa(doc.company_id)
     ''' @TODO separar estos dos'''
     dte = {
         'xml': doc.xml,
         'CodEnvio': IdRespuesta,
     }
     datos['filename'] = 'rechazo_comercial_%s.xml' % str(IdRespuesta)
     datos["ValidacionCom"] = {
         'IdRespuesta': IdRespuesta,
         'NroDetalles': NroDetalles,
         "RutResponde": doc.company_id.partner_id.rut(),
         'NmbContacto': self.env.user.partner_id.name,
         'FonoContacto': self.env.user.partner_id.phone,
         'MailContacto': self.env.user.partner_id.email,
         "xml_dte": dte,
         'EstadoDTE': 2,
         'EstadoDTEGlosa': self.claim_description,
         'CodRchDsc': -1,
     }
     resp = fe.validacion_comercial(datos)
     att = self._create_attachment(
         resp['respuesta_xml'],
         resp['nombre_xml'],
         doc.id,
         tipo,
     )
     partners = doc.partner_id.ids
     dte_email_id = doc.company_id.dte_email_id or self.env.user.company_id.dte_email_id
     values = {
         'res_id':
         doc.id,
         'email_from':
         dte_email_id.name_get()[0][1],
         'email_to':
         doc.dte_id.sudo().mail_id.email_from,
         'auto_delete':
         False,
         'model':
         tipo,
         'body':
         'XML de Respuesta DTE, Estado: %s , Glosa: %s ' %
         (resp['EstadoDTE'], resp['EstadoDTEGlosa']),
         'subject':
         'XML de Respuesta DTE',
         'attachment_ids': [[6, 0, att.ids]],
     }
     send_mail = self.env['mail.mail'].create(values)
     send_mail.send()
     if self.claim != 'N/D':
         doc.set_dte_claim(claim=self.claim)
コード例 #2
0
 def do_reject(self):
     id_seq = self.env.ref("l10n_cl_fe.response_sequence")
     IdRespuesta = id_seq.next_by_id()
     NroDetalles = 1
     doc = self.invoice_id or self.document_id
     datos = doc._get_datos_empresa(doc.company_id)
     """ @TODO separar estos dos"""
     dte = {
         "xml": doc.xml,
         "CodEnvio": IdRespuesta,
     }
     datos["filename"] = "rechazo_comercial_%s.xml" % str(IdRespuesta)
     datos["ValidacionCom"] = {
         "IdRespuesta": IdRespuesta,
         "NroDetalles": NroDetalles,
         "RutResponde": doc.company_id.document_number,
         "NmbContacto": self.env.user.partner_id.name,
         "FonoContacto": self.env.user.partner_id.phone,
         "MailContacto": self.env.user.partner_id.email,
         "xml_dte": dte,
         "EstadoDTE": 2,
         "EstadoDTEGlosa": self.claim_description,
         "CodRchDsc": -1,
     }
     resp = fe.validacion_comercial(datos)
     att = self._create_attachment(resp["respuesta_xml"],
                                   resp["nombre_xml"], doc.id, tipo)
     dte_email_id = doc.company_id.dte_email_id or self.env.user.company_id.dte_email_id
     values = {
         "res_id":
         doc.id,
         "email_from":
         dte_email_id.name_get()[0][1],
         "email_to":
         doc.dte_id.sudo().mail_id.email_from,
         "auto_delete":
         False,
         "model":
         "mail.message.dte.document",
         "body":
         "XML de Respuesta DTE, Estado: {} , Glosa: {} ".format(
             resp["EstadoDTE"], resp["EstadoDTEGlosa"]),
         "subject":
         "XML de Respuesta DTE",
         "attachment_ids": [[6, 0, att.ids]],
     }
     send_mail = self.env["mail.mail"].create(values)
     send_mail.send()
     if self.claim != "N/D":
         doc.set_dte_claim(claim=self.claim)
コード例 #3
0
    def do_validar_comercial(self):
        if self.estado_dte == '0':
            self.claim_description = 'DTE Recibido Ok'
        id_seq = self.env.ref('l10n_cl_fe.response_sequence')
        IdRespuesta = id_seq.next_by_id()
        NroDetalles = 1
        doc = self.invoice_id
        tipo = "account.invoice"
        if not doc:
            tipo = 'mail.message.dte.document'
            doc = self.document_id
        if doc.claim in ['ACD', 'RCD'] or (doc.type
                                           in ['out_invoice', 'out_refund']):
            return
        datos = doc._get_datos_empresa(doc.company_id)
        dte = doc._dte()
        ''' @TODO separar estos dos'''
        dte['CodEnvio'] = IdRespuesta
        datos['filename'] = 'validacion_comercial_%s.xml' % str(IdRespuesta)
        receptor = doc._receptor()
        datos["ValidacionCom"] = {
            'IdRespuesta': IdRespuesta,
            'NroDetalles': NroDetalles,
            "RutResponde": doc.company_id.partner_id.rut(),
            "RutRecibe": receptor['RUTRecep'],
            'NmbContacto': self.env.user.partner_id.name,
            'FonoContacto': self.env.user.partner_id.phone,
            'MailContacto': self.env.user.partner_id.email,
            'EstadoDTE': self.estado_dte,
            'EstadoDTEGlosa': self.claim_description,
            "Receptor": {
                "RUTRecep": receptor['RUTRecep'],
            },
            "DTEs": [dte],
        }

        if self.estado_dte in ['2']:
            datos['filename'] = 'validacion_comercial_%s.xml' % str(
                IdRespuesta)
            datos['ValidacionCom']['CodRchDsc'] = -1
        elif self.estado_dte != '0':
            datos["ValidacionCom"]['CodRchDsc'] = -2
        resp = fe.validacion_comercial(datos)
        doc.sii_message = resp['respuesta_xml']
        att = self._create_attachment(resp['respuesta_xml'],
                                      resp['nombre_xml'], doc.id, tipo)
        dte_email_id = doc.company_id.dte_email_id or self.env.user.company_id.dte_email_id
        values = {
            'res_id':
            doc.id,
            'email_from':
            dte_email_id.name_get()[0][1],
            'email_to':
            doc.partner_id.dte_email,
            'auto_delete':
            False,
            'model':
            tipo,
            'body':
            'XML de Validación Comercial, Estado: %s, Glosa: %s' %
            (resp['EstadoDTE'], resp['EstadoDTEGlosa']),
            'subject':
            'XML de Validación Comercial',
            'attachment_ids': [[6, 0, att.ids]],
        }
        send_mail = self.env['mail.mail'].create(values)
        send_mail.send()
        if self.claim == 'N/D':
            return
        try:
            doc.set_dte_claim(claim=self.claim)
        except Exception as e:
            _logger.warning("Error al setear Reclamo %s" % str(e))
        try:
            doc.get_dte_claim()
        except:
            _logger.warning("@TODO crear código que encole la respuesta")
コード例 #4
0
ファイル: validar.py プロジェクト: urbosmart/openti_image
 def do_validar_comercial(self):
     id_seq = self.env.ref('l10n_cl_fe.response_sequence').id
     IdRespuesta = self.env['ir.sequence'].browse(id_seq).next_by_id()
     NroDetalles = 1
     for inv in self.invoice_ids:
         if inv.claim in ['ACD', 'RCD'
                          ] or inv.type in ['out_invoice', 'out_refund']:
             continue
         datos = inv._get_datos_empresa(inv.company_id)
         dte = inv._dte()
         ''' @TODO separar estos dos'''
         dte['CodEnvio'] = IdRespuesta
         datos["ValidacionCom"] = {
             "RutResponde": inv.format_vat(inv.company_id.vat),
             'IdRespuesta': IdRespuesta,
             'NroDetalles': NroDetalles,
             "RutResponde": inv.format_vat(inv.company_id.vat),
             "RutRecibe":
             inv.partner_id.commercial_partner_id.document_number,
             'NmbContacto': self.env.user.partner_id.name,
             'FonoContacto': self.env.user.partner_id.phone,
             'MailContacto': self.env.user.partner_id.email,
             "Receptor": {
                 "RUTRecep":
                 inv.partner_id.commercial_partner_id.document_number,
             },
             "DTEs": [dte],
         }
         resp = fe.validacion_comercial(datos)
         inv.sii_message = resp['respuesta_xml']
         att = self._create_attachment(
             resp['respuesta_xml'],
             resp['nombre_xml'],
         )
         dte_email_id = inv.company_id.dte_email_id or self.env.user.company_id.dte_email_id
         values = {
             'res_id':
             inv.id,
             'email_from':
             dte_email_id.name_get()[0][1],
             'email_to':
             inv.partner_id.commercial_partner_id.dte_email,
             'auto_delete':
             False,
             'model':
             "account.invoice",
             'body':
             'XML de Validación Comercial, Estado: %s, Glosa: %s' %
             (resp['EstadoDTE'], resp['EstadoDTEGlosa']),
             'subject':
             'XML de Validación Comercial',
             'attachment_ids': [[6, 0, att.ids]],
         }
         send_mail = self.env['mail.mail'].create(values)
         send_mail.send()
         inv.claim = 'ACD'
         try:
             inv.set_dte_claim(rut_emisor=inv.format_vat(
                 inv.partner_id.vat), )
         except:
             _logger.warning("@TODO crear código que encole la respuesta")
コード例 #5
0
    def do_validar_comercial(self):
        if self.estado_dte == "0":
            self.claim_description = "DTE Recibido Ok"
        id_seq = self.env.ref("l10n_cl_fe.response_sequence")
        IdRespuesta = id_seq.next_by_id()
        NroDetalles = 1
        doc = self.invoice_id
        tipo = "account.invoice"
        if not doc:
            tipo = "mail.message.dte.document"
            doc = self.document_id
        if doc.claim in [
                "ACD"
        ] or (self.invoice_id and doc.type in ["out_invoice", "out_refund"]):
            return
        datos = doc._get_datos_empresa(
            doc.company_id) if self.invoice_id else self._get_datos_empresa(
                doc.company_id)
        dte = doc._dte()
        """ @TODO separar estos dos"""
        dte["CodEnvio"] = IdRespuesta
        datos["filename"] = "validacion_comercial_%s.xml" % str(IdRespuesta)
        receptor = doc._receptor()
        datos["ValidacionCom"] = {
            "IdRespuesta": IdRespuesta,
            "NroDetalles": NroDetalles,
            "RutResponde": doc.company_id.partner_id.rut(),
            "RutRecibe": receptor["RUTRecep"],
            "NmbContacto": self.env.user.partner_id.name,
            "FonoContacto": self.env.user.partner_id.phone,
            "MailContacto": self.env.user.partner_id.email,
            "EstadoDTE": self.estado_dte,
            "EstadoDTEGlosa": self.claim_description,
            "Receptor": {
                "RUTRecep": receptor["RUTRecep"],
            },
            "DTEs": [dte],
        }

        if self.estado_dte in ["2"]:
            datos["filename"] = "validacion_comercial_%s.xml" % str(
                IdRespuesta)
            datos["ValidacionCom"]["CodRchDsc"] = -1
        elif self.estado_dte != "0":
            datos["ValidacionCom"]["CodRchDsc"] = -2
        resp = fe.validacion_comercial(datos)
        doc.sii_message = resp["respuesta_xml"]
        att = self._create_attachment(resp["respuesta_xml"],
                                      resp["nombre_xml"], doc.id, tipo)
        dte_email_id = doc.company_id.dte_email_id or self.env.user.company_id.dte_email_id
        values = {
            "res_id":
            doc.id,
            "email_from":
            dte_email_id.name_get()[0][1],
            "email_to":
            doc.partner_id.commercial_partner_id.dte_email,
            "auto_delete":
            False,
            "model":
            tipo,
            "body":
            "XML de Validación Comercial, Estado: {}, Glosa: {}".format(
                resp["EstadoDTE"], resp["EstadoDTEGlosa"]),
            "subject":
            "XML de Validación Comercial",
            "attachment_ids": [[6, 0, att.ids]],
        }
        send_mail = self.env["mail.mail"].create(values)
        send_mail.send()
        if self.claim == "N/D":
            return
        try:
            doc.set_dte_claim(claim=self.claim)
        except Exception as e:
            _logger.warning("Error al setear Reclamo %s" % str(e))
        try:
            doc.get_dte_claim()
        except Exception:
            _logger.warning("@TODO crear código que encole la respuesta")