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