Ejemplo n.º 1
0
 def _registro_06_014(self, line):
     address = line['partner_id']
     if not address.zip:
         if not address.country_id or address.country_id.code == 'ES':
             raise Log(
                 _("Error: Supplier %s has no ZIP in its address.") %
                 line['partner_id'].name)
         else:
             # No exportar este registro para extranjeros sin dirección
             return ""
     text = self._start_registro_06(line)
     text += '014'
     # 30-34 - Código postal
     text += self.converter.convert(address.zip, 5)
     # 35-66 - Localidad del proveedor
     if not address.city:
         raise Log(
             _("Error: Supplier %s has no city in its address.") %
             line['partner_id'].name)
     text += self.converter.convert(address.city, 32)
     # 67-72 - Libre
     text += 6 * " "
     text += '\r\n'
     self.num_records += 1
     return text
Ejemplo n.º 2
0
    def _ban_cabecera(self):
        if self.order.date_prefered == 'due':
            fecha_tratamiento = self.order.line_ids \
                and self.order.line_ids[0].ml_maturity_date \
                or datetime.date.today().strftime('%Y-%d-%m')
            fecha_tratamiento = fecha_tratamiento.replace('-', '')
            dia = fecha_tratamiento[6:]
            mes = fecha_tratamiento[4:6]
            ano = fecha_tratamiento[:4]
            fecha_tratamiento = dia + mes + ano
        elif self.order.date_prefered == 'now':
            fecha_tratamiento = datetime.date.today().strftime('%d%m%Y')
        else:
            fecha_tratamiento = self.order.date_scheduled
            if not fecha_tratamiento:
                raise Log(
                    _("Error: Fecha planificada no \
                        establecida en la Orden de pago."))
            else:
                fecha_tratamiento = fecha_tratamiento.replace('-', '')
                dia = fecha_tratamiento[6:]
                mes = fecha_tratamiento[4:6]
                ano = fecha_tratamiento[:4]
                fecha_tratamiento = dia + mes + ano
        # 0 -3 Tipo de registro
        text = '021'
        # 4 - 11 Fecha de soporte
        text += datetime.date.today().strftime('%d%m%Y')
        # 12 - 19 Fecha tratamiento, Sin uso
        text += fecha_tratamiento
        # 20 - 28 NIF Ordenante
        ordenante = self.order.mode.bank_id.partner_id
        if not ordenante:
            raise Log(
                _("Error: Propietario de la cuenta no \
                    establecido para la cuenta %s.") % ordenante.acc_number)
        else:
            vat = ordenante.vat[2:]
            text += self.converter.convert(vat, 9)
            # 29 - 58 Nombre Ordenante
            ordenante = self.order.mode.bank_id.partner_id.name
            if len(ordenante) < 30:
                relleno = 30 - len(ordenante)
                ordenante += relleno * ' '
            elif len(ordenante) > 30:
                ordenante = ordenante[:30]
            text += ordenante
        # 59 - 77 Entidad, Oficina y Numero de cuenta del contrato
        cuenta = self.order.mode.bank_id.acc_number
        cuenta = cuenta.replace(' ', '')
        tipo_cuenta = self.order.mode.bank_id.state
        if tipo_cuenta == 'iban':
            cuenta = cuenta[4:]
        principio = cuenta[:8]
        cuenta = principio + cuenta[10:]
        text += cuenta

        text = text.ljust(325) + '\r\n'
        return text
Ejemplo n.º 3
0
    def _sab_registro_04(self, line):
        # 1 Codigo registro
        text = '4'
        # 2 -16 Codigo proveedor
        codigo_pro = line['partner_id']['ref']
        if codigo_pro:
            text += codigo_pro
        else:
            text += 15 * ' '
        # 17 - 18 Codigo Pais
        pais_pro = line['partner_id']['country_id']['code']
        if not pais_pro:
            raise Log(
                _("Error: El Proveedor %s no tiene establecido el \
                    País.") % line['partner_id']['name'])
        else:
            text += pais_pro
        # 19 - 29 SWIFT
        swift_pro = line['bank_id']['bank_bic']
        if not swift_pro:
            raise Log(
                _("Error: La cuenta bancaria del Proveedor %s no tiene \
                    establecido el SWIFT.") % line['partner_id']['name'])
        else:
            if len(swift_pro) < 11:
                relleno = 11 - len(swift_pro)
                swift_pro += relleno * ' '
            text += swift_pro
        # 30 - 63 IBAN
        if self.order.mode.conf_sabadell_type == '58':
            tipo_cuenta = line['bank_id']['state']
            if tipo_cuenta == 'iban':
                cuenta = line['bank_id']['acc_number']
                cuenta = cuenta.replace(' ', '')
                if len(cuenta) < 34:
                    relleno = 34 - len(cuenta)
                    cuenta += relleno * ' '
            else:
                raise Log(
                    _("Error: La Cuenta del Proveedor: %s tiene que \
                        estar en formato IBAN.") % line['partner_id']['name'])
        text += cuenta

        # 64 - 69 Codigo estadistico
        text += self.order.mode.codigo_estadistico
        # 70 Divisa
        text += 'EUR'
        text += '\r\n'

        return text
Ejemplo n.º 4
0
 def _registro_06_173(self, line):
     address = line['partner_id']
     text = self._start_registro_06(line)
     text += '173'
     # 30-63 - Cuenta del proveedor
     if self.order.mode.confirminet_type == '57':
         # Cheque - No hace falta cuenta
         text += 34 * " "
     else:
         if address.country_id.code == 'ES':
             ccc = self.converter.digits_only(line['bank_id'].acc_number)
             text += self.converter.convert('ES' + ccc, 34)
         else:
             if line['bank_id'].state != 'iban':
                 raise Log(
                     _("Bank account of supplier %s, which is of outside "
                       "of Spain, should be IBAN.") %
                     line['partner_id'].name)
             iban = self.converter.digits_only(line['bank_id'].acc_number)
             text += self.converter.convert(iban, 34)
     # 64-64 - Libre
     text += " "
     # 65-66 - Código SWIFT del país del proveedor
     if address.country_id.code == 'ES':
         text += "ES"
     else:
         text += line['bank_id'][:2]
     # 67-72 - Libre
     text += 6 * " "
     text += '\r\n'
     self.num_records += 1
     return text
Ejemplo n.º 5
0
 def _registro_06_018(self, line):
     text = self._start_registro_06(line)
     text += '018'
     # 30-35 - Fecha de vencimiento de la factura
     if line['date']:
         date = fields.Date.from_string(line['date'])
     elif self.order.date_scheduled:
         date = fields.Date.from_string(self.order.date_scheduled)
     else:
         date = datetime.today()
     text += date.strftime('%y%m%d')
     # 36-51 - Número de la factura
     invoice_number = (line['ml_inv_ref'] and
                       (line['ml_inv_ref'][0].supplier_invoice_number
                        or line['ml_inv_ref'][0].reference)
                       or line['communication'])
     if not invoice_number:
         raise Log(
             _("Error: Line with ID %s has no reference nor invoice "
               "number.") % line['id'])
     text += self.converter.convert(invoice_number, 16)
     # 56-65 - Referencia interna del cliente (Libre)
     text += self.converter.convert(line['communication'], 14)
     # 66-72 - Libre
     text += 7 * " "
     text += '\r\n'
     self.num_records += 1
     return text
Ejemplo n.º 6
0
 def _registro_03(self):
     today = datetime.today().strftime('%y%m%d')
     text = '0360'
     # 5-14 - NIF
     vat = self.order.mode.bank_id.partner_id.vat[2:]
     text += self.converter.convert(vat, 10)
     # 15-26 - Referencia interna BK - En blanco
     text += 12 * ' '
     # 27-29 - Número de dato
     text += '001'
     # 30-35 - Fecha de envío
     text += today
     # 36-41 - Fecha de emisión
     if self.order.date_scheduled:
         planned = fields.Date.from_string(self.order.date_scheduled)
         text += planned.strftime('%y%m%d')
     else:
         text += today
     # 42-65 - Contrato G.I.P.
     gip = self.converter.digits_only(self.order.mode.bank_id.acc_number)
     if gip[:4] != '0128':
         raise Log(
             _("Error: Contract number (Account number) is not valid. It "
               "should start with '0128'."))
     text += gip[:4]
     text += gip[4:8]
     text += gip[10:20]
     text += 4 * " "
     text += gip[8:10]
     # 66-72 - Libre
     text += 7 * ' '
     text += '\r\n'
     self.num_records += 1
     return text
Ejemplo n.º 7
0
 def _pop_detail(self, line):
     text = '560'
     self.number += 1
     text += str(self.number)
     supplier_vat = line['partner_id']['vat']
     supplier_vat = supplier_vat.replace("ES", "")
     if not supplier_vat or len(supplier_vat) > 10:
         raise Log(('Error: Supplier %s has wrong\
                 VAT.') % line['partner_id']['name'])
     else:
         if len(supplier_vat) < 10:
             fill = 10 - len(supplier_vat)
             supplier_vat = (fill * ' ') + supplier_vat
         text += supplier_vat
     under_one = line['communication']
     if under_one:
         if len(under_one) < 36:
             fill = 36 - len(under_one)
             under_one += fill * ' '
         elif len(under_one) > 36:
             under_one = under_one[:36]
         text += under_one
     else:
         text += 36 * ' '
     under_two = line['communication2']
     if under_two:
         if len(under_two) < 36:
             fill = 36 - len(under_two)
             under_two += fill * ' '
         elif len(under_two) > 36:
             under_two = under_two[:36]
         text += under_two
     text = text.ljust(90) + '\r\n'
     return text
Ejemplo n.º 8
0
 def create_file(self, order, lines):
     self.order = order
     file = ''
     self.num_records = 0
     if self.order.mode.type.code != 'payment_csb_68':
         raise Log(
             _('Error: Payment mode is not set correctly \
             %s') % self.order.mode.type.code)
     file += self._pop_header()
     partners = {}
     for line in lines:
         dic = partners.setdefault(line['partner_id'], {
             'lines': [],
             'total_payment': False
         })
         dic['lines'].append(line)
         if line['ml_inv_ref'][0].type == 'in_invoice':
             dic['total_payment'] += abs(line['amount'])
         else:
             dic['total_payment'] -= abs(line['amount'])
     for partner in partners:
         beneficiary = partners[partner]['lines'][0]
         total_payment = partners[partner]['total_payment']
         file += self._pop_beneficiary_headers(beneficiary, total_payment)
         num_payment = 0
         for line in partners[partner]['lines']:
             file += self._pop_beneficiary_payment(line, num_payment)
             num_payment += 1
     file += self._pop_totals(lines)
     return file
Ejemplo n.º 9
0
 def _start_registro_06(self, line):
     text = '06'
     # 3-4 - Forma de pago
     text += self.order.mode.confirminet_type
     # 5-14 - Código de ordenante
     vat = self.order.mode.bank_id.partner_id.vat[2:]
     text += self.converter.convert(vat, 10)
     # 15-26 - Referencia del proveedor
     if not line['partner_id'].vat:
         raise Log(
             _("Error: Supplier %s must have a VAT number.") %
             line['partner_id'].name)
     partner_vat = line['partner_id'].vat[2:]
     text += self.converter.convert(partner_vat[-12:], 12)
     return text
Ejemplo n.º 10
0
 def _registro_06_012(self, line):
     address = line['partner_id']
     text = self._start_registro_06(line)
     text += '012'
     # 30-65 - Dirección del proveedor
     if not address.street:
         raise Log(
             _("Error: Supplier %s has no street in its address.") %
             line['partner_id'].name)
     text += self.converter.convert(address.street, 36)
     # 66-72 - Libre
     text += 7 * " "
     text += '\r\n'
     self.num_records += 1
     return text
Ejemplo n.º 11
0
 def _pop_header(self):
     text = '0359'
     text += self._start_68()
     text += 12 * ' '
     text += '001'
     text += datetime.today().strftime('%d%m%y')
     text += 9 * ' '
     cc = self.order.mode.bank_id.acc_number
     cc = cc.replace(' ', '')
     if len(cc) != 24:
         raise Log(
             _('Error:Bank account of %s has not set correctly \
             ') % self.order.mode.bank_id.partner_id.name)
     text += cc
     text = text.ljust(100) + '\r\n'
     return text
Ejemplo n.º 12
0
 def _pop_detail(self, line):
     text = ''
     text += '6'
     invoice_number = line['ml_inv_ref'][0]['number']
     if not invoice_number:
         raise Log(("Error: Invoice %s has not \
                 valid invoice number.") % line['partner_id']['name'])
     invoice_number = invoice_number.replace('-', '')
     if len(invoice_number) < 20:
         fill = 20 - len(invoice_number)
         invoice_number += fill * ' '
     elif len(invoice_number) > 20:
         invoice_number = invoice_number[-20:]
     text += invoice_number
     if line['ml_inv_ref'][0].type == 'in_invoice':
         text += '+'
     else:
         text += '-'
     invoice_amount = self.converter.convert(abs(line['amount']), 15)
     text += invoice_amount
     invoice_date = line['ml_inv_ref'][0]['date_invoice'].replace('-', '')
     day = invoice_date[6:]
     month = invoice_date[4:6]
     year = invoice_date[:4]
     invoice_date = year + month + day
     text += invoice_date
     invoice_expiration = line['ml_inv_ref'][0]['date_due'].replace('-', '')
     day = invoice_expiration[6:]
     month = invoice_expiration[4:6]
     year = invoice_expiration[:4]
     invoice_expiration = year + month + day
     text += invoice_expiration
     text += 8 * ' '
     if line['ml_inv_ref'][0]['reference']:
         invoice_ref = line['ml_inv_ref'][0]['reference'].replace('/', '')
         if len(invoice_ref) < 16:
             fill = 16 - len(invoice_ref)
             invoice_ref += fill * ' '
         elif len(invoice_ref) > 16:
             invoice_ref = invoice_ref[:16]
         text += invoice_ref
     else:
         text += 16 * ' '
     text = text.ljust(250) + '\r\n'
     return text
Ejemplo n.º 13
0
 def _pop_totals(self, line):
     text = '5901'
     vat = self.order.mode.bank_id.partner_id.vat
     if not vat:
         raise Log(('Error: VAT of account not established \
             for the account %s.\
             ') % self.order.mode.bank_id.acc_number)
     vat = vat.replace("ES", "")
     if len(vat) < 10:
         fill = 10 - len(vat)
         vat = (fill * ' ') + vat
     elif len(vat) > 10:
         vat = vat[:10]
     text += vat
     text += self.converter.convert(abs(self.order.total), 12)
     num = str(self.num_records)
     text += num.zfill(12)
     total = str((self.num_records * 2) + 6)
     text += total.zfill(12)
     text = text.ljust(90) + '\r\n'
     return text
Ejemplo n.º 14
0
 def _registro_06_174(self, line):
     address = line['partner_id']
     text = self._start_registro_06(line)
     text += '174'
     # 30-40 - Dirección Swift
     if self.order.mode.confirminet_type == '57':
         text += 11 * " "
     else:
         if (address.country_id.code != 'ES'
                 and not line['bank_id'].bank_bic):
             raise Log(
                 _("Partner %s doesn't have a SWIFT/BIC code in its bank "
                   "account.") % line['partner_id'].name)
         text += self.converter.convert(line['bank_id'].bank_bic, 11)
     # 41-56 Claves adicionales (ABA/BLZ/FW/SC...)
     text += 16 * " "
     # 57-72 - Libre
     text += 16 * " "
     text += '\r\n'
     self.num_records += 1
     return text
Ejemplo n.º 15
0
 def _pop_beneficiarios(self, line):
     all_text = ''
     for i in range(4):
         text = ''
         # 1 y 2
         text += '16'
         # 3 -4 Codigo operacion
         if self.order.mode.conf_popular_type == '70':
             text += '70'
         elif self.order.mode.conf_popular_type == '60':
             text += '60'
         elif self.order.mode.conf_popular_type == '61':
             text += '61'
         # 5 - 14 Codigo ordenante
         text += '0'
         vat = self.order.mode.bank_id.partner_id.vat[2:]
         text += self.converter.convert(vat, 9)
         # 15 - 26 NIF Beneficiario
         nif = line['partner_id']['vat']
         if not nif:
             raise Log(
                 _("Error: El Proveedor %s no tiene \
                     establecido el NIF.") % line['partner_id']['name'])
         nif = nif[2:]
         if len(nif) < 12:
             relleno = 12 - len(nif)
             nif = (relleno * '0') + nif
         text += nif
         if (i + 1) == 1:
             # 27 - 29 Numero de dato
             text += '010'
             # 30 - 41 Importe
             text += self.converter.convert(abs(line['amount']), 12)
             # 42 - 59 Num banco, Num sucursal, Num cuenta
             if self.order.mode.conf_popular_type != '61':
                 cuenta = line['bank_id']['acc_number']
                 cuenta = cuenta.replace(' ', '')
                 tipo_cuenta = self.order.mode.bank_id.state
                 if tipo_cuenta == 'iban':
                     cuenta = cuenta[4:]
                 control = cuenta[8:10]
                 principio = cuenta[:8]
                 cuenta = principio + cuenta[10:]
                 text += cuenta
             else:
                 cuenta = 18 * ' '
                 text += cuenta
             # 60 - 61 - 62  Gastos, Forma de pago, Libre
             if self.order.mode.conf_popular_type in ['60', '61']:
                 if self.order.mode.gastos == 'ordenante':
                     text += '1  '
                 elif self.order.mode.gastos == 'beneficiario':
                     text += '2  '
                 else:
                     text += '   '
             elif self.order.mode.conf_popular_type == '70':
                 if self.order.mode.forma_pago == 'C':
                     text += ' C '
                 elif self.order.mode.forma_pago == 'T':
                     text += ' T '
                 else:
                     text += '   '
             # 63 - Digito control
             if self.order.mode.conf_popular_type != '61':
                 text += control
             else:
                 text += '  '
             # 65 - 72 Libre
             text += 8 * ' '
         if (i + 1) == 2:
             # 27 - 29 Numero de dato
             text += '011'
             # 30 - 65 Nombre del beneficiario
             nombre_pro = line['partner_id']['name']
             if nombre_pro:
                 if len(nombre_pro) < 36:
                     relleno = 36 - len(nombre_pro)
                     nombre_pro += relleno * ' '
                 elif len(nombre_pro) > 36:
                     nombre_pro = nombre_pro[:36]
                 text += nombre_pro
             else:
                 text += 36 * ' '
             # 66 - 72 Libre
             text += 7 * ' '
         if (i + 1) == 3:
             # 27 - 29 Numero de dato
             text += '012'
             # 30 - 65 Domicilio del beneficiario
             domicilio_pro = line['partner_id']['street']
             if not domicilio_pro:
                 raise Log(
                     _("Error: El Proveedor %s no tiene\
                      establecido el Domicilio.\
                      ") % line['partner_id']['name'])
             else:
                 if len(domicilio_pro) < 36:
                     relleno = 36 - len(domicilio_pro)
                     domicilio_pro += relleno * ' '
                 text += domicilio_pro
             # 66 - 72 Libre
             text += 7 * ' '
         if (i + 1) == 4:
             # 27 - 29 Numero de dato
             text += '014'
             # 30 - 65 CP, Ciudad
             cp_pro = line['partner_id']['zip']
             if not cp_pro:
                 raise Log(
                     _("Error: El Proveedor %s no tiene establecido\
                      el C.P.") % line['partner_id']['name'])
             else:
                 if len(cp_pro) < 5:
                     relleno = 5 - len(cp_pro)
                     cp_pro += relleno * ' '
                 text += cp_pro
             ciudad_pro = line['partner_id']['city']
             if not ciudad_pro:
                 raise Log(
                     _("Error: El Proveedor %s no tiene establecida\
                      la Ciudad.") % line['partner_id']['name'])
             else:
                 if len(ciudad_pro) < 31:
                     relleno = 31 - len(ciudad_pro)
                     ciudad_pro += relleno * ' '
                 text += ciudad_pro
             # 66 - 72 Libre
             text += 7 * ' '
         text = text.ljust(100) + '\r\n'
         all_text += text
     self.num_records += 1
     return all_text
Ejemplo n.º 16
0
 def _pop_beneficiary(self, line):
     all_text = ''
     for i in range(3):
         text = '530'
         text += str(i + 1)
         supplier_vat = line['partner_id']['vat']
         supplier_vat = supplier_vat.replace("ES", "")
         if not supplier_vat or len(supplier_vat) > 10:
             raise Log(('Error: Supplier %s has wrong\
                     VAT.') % line['partner_id']['name'])
         else:
             if len(supplier_vat) < 10:
                 fill = 10 - len(supplier_vat)
                 supplier_vat = (fill * ' ') + supplier_vat
             text += supplier_vat
         if (i + 1) == 1:
             text += 5 * '0'
             ref = self.order.reference
             ref = ref[2:].replace("/", "")
             text += ref.zfill(7)
             supplier_name = line['partner_id']['name']
             if not supplier_name:
                 raise Log(('Error: Supplier %s has not name established. \
                         ') % line['partner_id']['vat'])
             else:
                 if len(supplier_name) < 40:
                     fill = 40 - len(supplier_name)
                     supplier_name += fill * ' '
                 elif len(supplier_name) > 40:
                     supplier_name = supplier_name[:40]
                 text += supplier_name
             text += self.converter.convert(abs(self.order.total), 10)
             text += datetime.date.today().strftime('%d%m%y')
             if self.order.date_prefered == 'due':
                 planned_date = self.order.line_ids \
                     and self.order.line_ids[0].ml_maturity_date \
                     or datetime.date.today().strftime('%d-%m-%y')
                 planned_date = planned_date.replace('-', '')
                 day = planned_date[6:]
                 month = planned_date[4:6]
                 year = planned_date[2:4]
                 planned_date = day + month + year
             elif self.order.date_prefered == 'now':
                 planned_date = datetime.date.today().strftime('%d%m%y')
             else:
                 planned_date = self.order.date_scheduled
                 if not planned_date:
                     raise Log(
                         ('Error:Planned date not established in order.'))
                 else:
                     planned_date = planned_date.replace('-', '')
                     day = planned_date[6:]
                     month = planned_date[4:6]
                     year = planned_date[:4]
                     planned_date = day + month + year
             text += planned_date
             if self.order.mode.payment_kutxa_type == '56':
                 text += '1'
             else:
                 text += '2'
         if (i + 1) == 2:
             supplier_street = line['partner_id']['street']
             if not supplier_street:
                 raise Log(('Error: Supplier %s has not \
                         street established.\
                         ') % line['partner_id']['name'])
             else:
                 if len(supplier_street) < 36:
                     fill = 36 - len(supplier_street)
                     supplier_street += fill * ' '
                 elif len(supplier_street) > 36:
                     supplier_street = supplier_street[:36]
                 text += supplier_street
             supplier_street2 = line['partner_id']['street2']
             if supplier_street2:
                 if len(supplier_street2) < 36:
                     fill = 36 - len(supplier_street2)
                     supplier_street2 += fill * ' '
                 elif len(supplier_street2) > 36:
                     supplier_street2 = supplier_street2[:36]
                 text += supplier_street2
         if (i + 1) == 3:
             supplier_zip = line['partner_id']['zip']
             if not supplier_zip:
                 raise Log(('Error: Supplier %s has not \
                         C.P established.') % line['partner_id']['name'])
             else:
                 if len(supplier_zip) < 5:
                     fill = 5 - len(supplier_zip)
                     supplier_zip += fill * ' '
                 elif len(supplier_zip) > 5:
                     supplier_zip = supplier_zip[:5]
                 text += supplier_zip
             supplier_city = line['partner_id']['city']
             if not supplier_city:
                 raise Log(('Error: Supplier %s has not \
                         city established.') % line['partner_id']['name'])
             else:
                 if len(supplier_city) < 36:
                     fill = 36 - len(supplier_city)
                     supplier_city += fill * ' '
                 elif len(supplier_city) > 36:
                     supplier_city = supplier_city[:36]
                 text += supplier_city
             supplier_state = line['partner_id']['state_id']['name']
             if not supplier_state:
                 raise Log(('Error: Supplier %s has not \
                         state established.') % line['partner_id']['name'])
             else:
                 if len(supplier_state) < 15:
                     fill = 15 - len(supplier_state)
                     supplier_state += fill * ' '
                 elif len(supplier_state) > 15:
                     supplier_state = supplier_state[:15]
                 text += supplier_state
             if self.order.mode.payment_kutxa_type == '56':
                 supplier_account = line['bank_id']['acc_number']
                 if not supplier_account:
                     raise Log(
                         ('Error: Supplier %s has not account established. \
                             ') % line['partner_id']['name'])
                 supplier_account = supplier_account.replace(' ', '')
                 type_account = line['bank_id']['state']
                 if type_account == 'iban':
                     supplier_account = supplier_account[4:]
                 init = supplier_account[:8]
                 dc = supplier_account[8:10]
                 supplier_account = init + dc + supplier_account[10:]
                 text += supplier_account
         text = text.ljust(90) + '\r\n'
         all_text += text
     return all_text
Ejemplo n.º 17
0
    def _sab_registro_01(self):
        if self.order.date_prefered == 'due':
            fecha_planificada = datetime.date.today().strftime('%Y-%m-%d')
            fecha_planificada = fecha_planificada.replace('-', '')
        elif self.order.date_prefered == 'now':
            fecha_planificada = datetime.date.today().strftime('%Y%m%d')
        else:
            fecha_planificada = self.order.date_scheduled
            if not fecha_planificada:
                raise Log(
                    _("Error: Fecha planificada no establecida en \
                        la Orden de pago."))
            else:
                fecha_planificada = fecha_planificada.replace('-', '')

        # Caracteres 1 y 2-3
        text = '1  '

        # 4 - 43 Nombre ordenante
        ordenante = self.order.mode.bank_id.partner_id.name
        if not ordenante:
            raise Log(
                _("Error: Propietario de la cuenta no \
                    establecido para la cuenta\
                    %s.") % self.order.mode.bank_id.acc_number)
        if len(ordenante) <= 40:
            relleno = 40 - len(ordenante)
            ordenante += relleno * ' '
        elif len(ordenante) > 40:
            ordenante = ordenante[:40]
        text += ordenante

        # 44 - 51 Fecha de proceso
        text += fecha_planificada

        # 52 - 60 NIF Ordenante
        vat = self.order.mode.bank_id.partner_id.vat[2:]
        text += self.converter.convert(vat, 9)

        # 61 - 62 Tipo de Lote
        text += '65'

        # 63 - 64 Forma de envío
        text += 'B'

        # 64 - 83 Cuenta de cargo
        tipo_cuenta = self.order.mode.bank_id.state
        cuenta = self.order.mode.bank_id.acc_number
        cuenta = cuenta.replace(' ', '')
        if tipo_cuenta == 'bank':
            text += cuenta
        else:
            cuenta = cuenta[4:]
            text += cuenta

        # 84 - 95 Contrato BSConfirming
        text += self.order.mode.contrato_bsconfirming

        # 96 - 99 Codigo fichero
        text += 'KF01'

        # 100 - 102 Codigo divisa
        text += 'EUR'
        text += '\r\n'

        return text
Ejemplo n.º 18
0
    def _sab_registro_03(self, line):
        # 1 Codigo registro
        text = '3'
        # 2 - 40 Nombre Proveedor
        nombre_pro = line['partner_id']['name']
        if nombre_pro:
            if len(nombre_pro) < 40:
                relleno = 40 - len(nombre_pro)
                nombre_pro += relleno * ' '
            elif len(nombre_pro) > 40:
                nombre_pro = nombre_pro[:40]
            text += nombre_pro
        else:
            text += 40 * ' '
        # 42 - 43 Idioma proveedor
        idioma_pro = line['partner_id']['lang']
        if idioma_pro:
            if idioma_pro == 'es_ES':
                text += '08'
            else:
                text += '13'
        else:
            text += 2 * ' '
        # 44 - 110 Domicilio
        domicilio_pro = line['partner_id']['street']
        if not domicilio_pro:
            raise Log(
                _("Error: El Proveedor %s no tiene establecido el \
                    Domicilio.") % line['partner_id']['name'])
        else:
            if len(domicilio_pro) < 67:
                relleno = 67 - len(domicilio_pro)
                domicilio_pro += relleno * ' '
            text += domicilio_pro

        # 111 - 150 Ciudad
        ciudad_pro = line['partner_id']['city']
        if not ciudad_pro:
            raise Log(
                _("Error: El Proveedor %s no tiene establecida la \
                    Ciudad.") % line['partner_id']['name'])
        else:
            if len(ciudad_pro) < 40:
                relleno = 40 - len(ciudad_pro)
                ciudad_pro += relleno * ' '
            text += ciudad_pro
        # 151- 155 CP
        cp_pro = line['partner_id']['zip']
        if not cp_pro:
            raise Log(
                _("Error: El Proveedor %s no tiene establecido el \
                    C.P.") % line['partner_id']['name'])
        else:
            if len(cp_pro) < 5:
                relleno = 5 - len(cp_pro)
                cp_pro += relleno * ' '
            text += cp_pro
        # 156 - 161 Reservado no se utiliza
        text += 6 * ' '
        # 162 - 176 Telefono
        telefono_pro = line['partner_id']['phone']
        if telefono_pro:
            telefono_pro = telefono_pro.replace(' ', '')
            telefono_pro = telefono_pro.replace('+', '')
            if len(telefono_pro) < 15:
                relleno = 15 - len(telefono_pro)
                telefono_pro += relleno * ' '
            text += telefono_pro
        else:
            text += 15 * ' '
        # 177 - 191 fax
        fax_pro = line['partner_id']['fax']
        if fax_pro:
            fax_pro = fax_pro.replace(' ', '')
            fax_pro = fax_pro.replace('+', '')
            if len(fax_pro) < 15:
                relleno = 15 - len(fax_pro)
                fax_pro += relleno * ' '
            text += fax_pro
        else:
            text += 15 * ' '
        # 192 - 251 Correo
        email_pro = line['partner_id']['email']
        if email_pro:
            if re.match(
                    r'^[(a-z0-9\_\-\.)]+@[(a-z0-9\_\-\.)]+\.[(a-z)]{2,15}\
                    $', email_pro.lower()):
                if len(email_pro) < 60:
                    relleno = 60 - len(email_pro)
                    email_pro += relleno * ' '
                text += email_pro
            else:
                text += 60 * ' '
        else:
            text += 60 * ' '
        # 252 Tipo envio informacion
        # Por correo 1, por fax 2, por email 3
        text += self.order.mode.tipo_envio_info
        # 253 - 254 Codigo pais
        pais_pro = line['partner_id']['country_id']['code']
        if not pais_pro:
            raise Log(
                _("Error: El Proveedor %s no tiene establecido el \
                    País.") % line['partner_id']['name'])
        else:
            text += pais_pro

        # 255 -256 Codigo pais residencia no se usa
        text += '  '
        # 257 --- Reservado
        text += 44 * ' '
        text += '\r\n'

        return text
Ejemplo n.º 19
0
    def _sab_registro_02(self, line):
        # 1 Codigo registro
        text = '2'
        # 2 - 16 Codigo Proveedor
        codigo_pro = line['partner_id']['ref']
        if codigo_pro:
            text += codigo_pro
        else:
            text += 15 * ' '
        # 17 - 18 Tipo de documento
        tipo_doc = line['partner_id']['vat_type']
        if tipo_doc == '1':
            tipo_doc = '02'
        elif tipo_doc == '2':
            tipo_doc = '12'
        elif tipo_doc == '3':
            tipo_doc = '04'
        elif tipo_doc == '4':
            tipo_doc = '06'
        elif tipo_doc == '5':
            tipo_doc = '03'
        elif tipo_doc == '6':
            tipo_doc = '99'
        text += tipo_doc
        # 19 - 30 Documento identificativo
        nif = line['partner_id']['vat']
        if not nif:
            raise Log(
                _("Error: El Proveedor %s no tiene \
                    establecido el NIF.") % line['partner_id']['name'])
        if len(nif) < 12:
            relleno = 12 - len(nif)
            nif += relleno * ' '
        text += nif
        # 31 Forma de pago
        forma_pago = self.order.mode.conf_sabadell_type
        if forma_pago == '56':
            forma_pago = 'T'
        elif forma_pago == '57':
            forma_pago = 'C'
        elif forma_pago == '58':
            forma_pago = 'E'
        text += forma_pago
        # 32 - 51 Cuenta
        if forma_pago == 'T':
            tipo_cuenta = line['bank_id']['state']
            if tipo_cuenta == 'bank':
                cuenta = line['bank_id']['acc_number']
                cuenta = cuenta.replace(' ', '')
                text += cuenta
            else:
                text += 20 * ' '
        else:
            text += 20 * ' '
        # 52 - 66 Num Factura
        num_factura = 15 * ' '
        if line['ml_inv_ref'][0]['reference']:
            num_factura = line['ml_inv_ref'][0]['reference']
            if num_factura:
                if len(num_factura) < 15:
                    relleno = 15 - len(num_factura)
                    num_factura += relleno * ' '
        text += num_factura
        # 67 - 81 Importe de la factura
        text += self.converter.convert(abs(line['amount']), 14)
        if line['amount'] >= 0:
            text += '+'
        else:
            text += '-'

        # 82 - 89 Fecha factura
        fecha_factura = 8 * ' '
        if line['ml_inv_ref'][0]['reference']:
            fecha_factura = line['ml_inv_ref'][0]['date_invoice']\
                .replace('-', '')
        text += fecha_factura
        # 90 - 97 Fecha vencimiento
        # fecha_vencimiento = 8 * ' '
        fecha_vencimiento = line['date'].replace('-', '')
        text += fecha_vencimiento
        # 98 - 127 Referencia factura ordenante
        referencia_factura = 30 * ' '
        if line['ml_inv_ref'][0]['reference']:
            referencia_factura = line['ml_inv_ref'][0]['number']\
                .replace('-', '')
            if len(referencia_factura) < 30:
                relleno = 30 - len(referencia_factura)
                referencia_factura += relleno * ' '
        text += referencia_factura
        # 128 - Barrado cheque
        if forma_pago == 'C':
            text += 'S'
        else:
            text += ' '
        # 129 - 136 fecha emision pagaré
        text += 8 * ' '
        # 137 -144 fecha vencimiento pagaré
        text += 8 * ' '
        # 145 tipo pagare
        text += ' '
        # 146 - 175 IBAN
        if forma_pago == 'T':
            tipo_cuenta = line['bank_id']['state']
            if tipo_cuenta == 'iban':
                cuenta = line['bank_id']['acc_number']
                cuenta = cuenta.replace(' ', '')
                if len(cuenta) < 30:
                    relleno = 30 - len(cuenta)
                    cuenta += relleno * ' '
            text += cuenta
        else:
            text += 30 * ' '
        # 176 Reservado
        text += 125 * ' '
        text += '\r\n'

        return text
Ejemplo n.º 20
0
 def _pop_beneficiary(self, line):
     all_text = ''
     for i in range(3):
         text = ''
         text += str(i + 3)
         if (i + 1) == 1:
             supplier_name = line['partner_id']['name']
             if not supplier_name:
                 raise Log(("Error: Supplier %s has not name established. \
                         ") % line['partner_id']['vat'])
             else:
                 if len(supplier_name) < 70:
                     fill = 70 - len(supplier_name)
                     supplier_name += fill * ' '
                 elif len(supplier_name) > 70:
                     supplier_name = supplier_name[:70]
                 text += supplier_name
             supplier_vat = line['partner_id']['vat']
             if not supplier_vat or len(supplier_vat) > 20:
                 raise Log(("Error: Supplier %s has wrong\
                         VAT.") % line['partner_id']['name'])
             else:
                 if len(supplier_vat) > 9:
                     supplier_vat = supplier_vat[2:]
                 fill = 20 - len(supplier_vat)
                 supplier_vat += fill * ' '
                 text += supplier_vat
             supplier_street = line['partner_id']['street']
             if not supplier_street:
                 raise Log(("Error: Supplier %s has not \
                         street established.\
                         ") % line['partner_id']['name'])
             else:
                 supplier_street = supplier_street.replace(u'º', '')
                 if len(supplier_street) < 65:
                     fill = 65 - len(supplier_street)
                     supplier_street += fill * ' '
                 elif len(supplier_street) > 65:
                     supplier_street = supplier_street[:65]
                 text += supplier_street
             supplier_city = line['partner_id']['city']
             if not supplier_city:
                 raise Log(("Error: Supplier %s has not \
                         city established.") % line['partner_id']['name'])
             else:
                 if len(supplier_city) < 40:
                     fill = 40 - len(supplier_city)
                     supplier_city += fill * ' '
                 elif len(supplier_city) > 40:
                     supplier_city = supplier_city[:40]
                 text += supplier_city
             supplier_zip = line['partner_id']['zip']
             if not supplier_zip:
                 raise Log(("Error: Supplier %s has not \
                         C.P established.") % line['partner_id']['name'])
             else:
                 if len(supplier_zip) < 10:
                     fill = 10 - len(supplier_zip)
                     supplier_zip += fill * ' '
                 elif len(supplier_zip) > 10:
                     supplier_zip = supplier_zip[:10]
                 text += supplier_zip
             text += u'ES'
         if (i + 1) == 2:
             supplier_mail = line['partner_id']['email']
             if not supplier_mail or len(supplier_mail) > 50:
                 raise Log(("Error: Supplier %s has wrong \
                         Email") % line['partner_id']['name'])
             else:
                 if len(supplier_mail) < 50:
                     fill = 50 - len(supplier_mail)
                     supplier_mail += fill * ' '
                 text += supplier_mail
             text += 50 * ' '
             supplier_phone = line['partner_id']['phone']
             if not supplier_phone or len(supplier_phone) > 15:
                 text += 15 * ' '
             else:
                 if len(supplier_phone) < 15:
                     fill = 15 - len(supplier_phone)
                     supplier_phone += fill * ' '
                 text += supplier_phone
             supplier_fax = line['partner_id']['fax']
             if not supplier_fax or len(supplier_fax) > 15:
                 text += 15 * ' '
             else:
                 if len(supplier_fax) < 15:
                     fill = 15 - len(supplier_fax)
                     supplier_fax += fill * ' '
                 text += supplier_fax
         if (i + 1) == 3:
             if self.order.mode.conf_kutxa_type == '56':
                 text += u'T'
                 supplier_account = line['bank_id']['acc_number']
                 if not supplier_account:
                     raise Log(
                         ("Error: Supplier %s has not account established. \
                             ") % line['partner_id']['name'])
                 supplier_account = supplier_account.replace(' ', '')
                 if len(supplier_account) < 34:
                     fill = 34 - len(supplier_account)
                     supplier_account += fill * ' '
                 text += supplier_account
             elif self.order.mode.conf_kutxa_type == '57':
                 text += u'C'
                 text += 34 * ' '
             text += 11 * ' '
             text += 34 * ' '
             text += u'ES'
         text = text.ljust(250) + '\r\n'
         all_text += text
     return all_text
Ejemplo n.º 21
0
    def _ban_beneficiarios(self, line):
        # 0 - 3 Tipo de registro
        text = '022'
        # 4 - 13 NIF Proveedor
        nif = line['partner_id']['vat']
        if not nif:
            raise Log(
                _("Error: El Proveedor %s no tiene \
                    establecido el NIF.") % line['partner_id']['name'])
        nif = nif[2:]
        text += nif
        # 14 - 15 Codigo centro Proveedor
        text += '000'
        # 16 - 55 Nombre Proveedor
        nombre_pro = line['partner_id']['name']
        if nombre_pro:
            if len(nombre_pro) < 40:
                relleno = 40 - len(nombre_pro)
                nombre_pro += relleno * ' '
            elif len(nombre_pro) > 40:
                nombre_pro = nombre_pro[:40]
            text += nombre_pro
        else:
            text += 40 * ' '
        # 56 - 105 Apellido1 y Apellido2 Proveedor
        text += 50 * ' '
        # 106 - 135 Domicilio Proveedor
        domicilio_pro = line['partner_id']['street']
        if not domicilio_pro:
            raise Log(
                _("Error: El Proveedor %s no tiene \
                    establecido el Domicilio.") % line['partner_id']['name'])
        else:
            if len(domicilio_pro) < 30:
                relleno = 30 - len(domicilio_pro)
                domicilio_pro += relleno * ' '
            text += domicilio_pro
        # 136 - 140 C.P. Proveedor
        cp_pro = line['partner_id']['zip']
        if not cp_pro:
            raise Log(
                _("Error: El Proveedor %s no tiene \
                    establecido el C.P.") % line['partner_id']['name'])
        else:
            if len(cp_pro) < 5:
                relleno = 5 - len(cp_pro)
                cp_pro += relleno * ' '
            text += cp_pro
        # 141 - 170 Ciudad Proveedor
        ciudad_pro = line['partner_id']['city']
        if not ciudad_pro:
            raise Log(
                _("Error: El Proveedor %s no tiene \
                    establecida la Ciudad.") % line['partner_id']['name'])
        else:
            if len(ciudad_pro) < 30:
                relleno = 30 - len(ciudad_pro)
                ciudad_pro += relleno * ' '
            text += ciudad_pro
        # 171 - 210 Email Proveedor, no obligatorio
        text += 40 * ' '
        # 211 - 219 Telefono, no obligatorio
        text += '000000000'
        # 220 - 228 Fax, no obligatorio
        text += '000000000'
        # 229 - 248 Cuenta Proveedor
        cuenta = line['bank_id']['acc_number']
        cuenta = cuenta.replace(' ', '')
        tipo_cuenta = self.order.mode.bank_id.state
        if tipo_cuenta == 'iban':
            cuenta = cuenta[4:]
        text += cuenta
        # 249 - 258 Numero Factura
        num_factura = 10 * ' '
        if line['ml_inv_ref'][0]['reference']:
            num_factura = line['ml_inv_ref'][0]['reference']
            if num_factura:
                if len(num_factura) < 10:
                    relleno = 10 - len(num_factura)
                    num_factura += relleno * ' '
        text += num_factura
        # 259 - 266 Fecha Factura
        fecha_factura = '00000000'
        if line['ml_inv_ref'][0]['reference']:
            fecha_factura = line['ml_inv_ref'][0]['date_invoice']\
                .replace('-', '')
            dia = fecha_factura[6:]
            mes = fecha_factura[4:6]
            ano = fecha_factura[:4]
            fecha_factura = dia + mes + ano
        text += fecha_factura
        # 267 - 281 Importe Factura
        text += self.converter.convert(abs(line['amount']), 15)
        # 282 Signo
        if line['amount'] >= 0:
            text += '+'
        else:
            text += '-'
        # 283 - 290 Fecha vencimiento
        fecha_vencimiento = '00000000'
        if line['ml_inv_ref'][0]['reference']:
            fecha_vencimiento = line['date'].replace('-', '')
            dia = fecha_vencimiento[6:]
            mes = fecha_vencimiento[4:6]
            ano = fecha_vencimiento[:4]
            fecha_vencimiento = dia + mes + ano
        text += fecha_vencimiento
        # 291 Medio de pago
        text += self.order.mode.conf_bankia_type
        # 292 - Fecha emision pago domicilado
        fecha_vencimiento = '00000000'
        if self.order.mode.conf_bankia_type == 'P':
            if line['ml_inv_ref'][0]['reference']:
                fecha_vencimiento = line['ml_inv_ref'][0]['date_due']\
                    .replace('-', '')
                dia = fecha_vencimiento[6:]
                mes = fecha_vencimiento[4:6]
                ano = fecha_vencimiento[:4]
                fecha_vencimiento = dia + mes + ano
        text += fecha_vencimiento
        text = text.ljust(325) + '\r\n'

        return text
Ejemplo n.º 22
0
 def _pop_beneficiary_headers(self, line, total_payment):
     text = ''
     partner_obj = self.env['res.partner']
     address_ids = line['partner_id'].address_get(['default', 'invoice'])
     if address_ids.get('invoice'):
         address = partner_obj.browse(address_ids.get('invoice'))
     elif address_ids.get('default'):
         address = partner_obj.browse(address_ids.get('default'))
     else:
         raise Log(
             _('User error:\n\nPartner %s has no invoicing or \
                     default address.') % line['partner_id'].name)
     text1 = self._header_beneficiary_68(line)
     text1 += '010'
     text1 += self.converter.convert(line['partner_id'].name, 40)
     text1 = text1.ljust(100) + '\r\n'
     text += text1
     text2 = self._header_beneficiary_68(line)
     text2 += '011'
     txt_address = ''
     if address.street:
         txt_address += address.street
     if address.street2:
         txt_address += ' ' + address.street2
     text2 += self.converter.convert(txt_address, 45)
     text2 = text2.ljust(100) + '\r\n'
     text += text2
     text3 = self._header_beneficiary_68(line)
     text3 += '012'
     text3 += self.converter.convert(address.zip, 5)
     text3 += self.converter.convert(address.city, 40)
     text3 = text3.ljust(100) + '\r\n'
     text += text3
     text4 = self._header_beneficiary_68(line)
     text4 += '013'
     text4 += self.converter.convert(address.zip, 9)
     text4 += self.converter.convert(address.state_id.name or '', 30)
     text4 += self.converter.convert(address.country_id.name or '', 20)
     text4 = text4.ljust(100) + '\r\n'
     text += text4
     text5 = self._header_beneficiary_68(line)
     text5 += '014'
     ref = line['ml_inv_ref'][0].number
     ref = ''.join([x for x in ref if x.isdigit()])
     self.ref = self._get_reference(ref, 7)
     text5 += self.ref
     self.dc = '9000' + self.ref
     self.dc = int(self.dc) % 7
     self.dc = self.converter.convert(str(self.dc), 1)
     text5 += self.dc
     if line.get('ml_maturity_date'):
         date_pay = datetime.strptime(line['ml_maturity_date'], '%Y-%m-%d')
     elif line.get('date'):
         date_pay = datetime.strptime(line['date'], '%Y-%m-%d')
     else:
         date_pay = datetime.today()
     text5 += self.converter.convert(date_pay.strftime('%d%m%Y'), 8)
     text5 += self.converter.convert(abs(total_payment), 12)
     text5 += '0'
     country_code = address.country_id and address.country_id.code or ''
     if country_code != 'ES':
         text5 += self.converter.convert(country_code, 2)
     else:
         text5 += 2 * ' '
     text5 += 6 * ' '
     text5 = text5.ljust(100) + '\r\n'
     text += text5
     self.num_records += 5
     return text
Ejemplo n.º 23
0
    def _pop_detalle(self, line):
        text = ''
        # 1 y 2
        text += '17'
        # 3 -4 Codigo operacion
        if self.order.mode.conf_popular_type == '70':
            text += '70'
        elif self.order.mode.conf_popular_type == '60':
            text += '60'
        elif self.order.mode.conf_popular_type == '61':
            text += '61'
        # 5 - 14 Codigo ordenante
        text += '0'
        vat = self.order.mode.bank_id.partner_id.vat[2:]
        text += self.converter.convert(vat, 9)
        # 15 - 26 NIF Beneficiario
        nif = line['partner_id']['vat']
        if not nif:
            raise Log(
                _("Error: El Proveedor %s no tiene establecido\
                 el NIF.") % line['partner_id']['name'])
        nif = nif[2:]
        if len(nif) < 12:
            relleno = 12 - len(nif)
            nif = (relleno * '0') + nif
        text += nif
        # 27 - 29 Numero de dato
        text += '100'
        # 30 - 37 Fecha emisión Factura
        fecha_factura = 8 * ' '
        if line['ml_inv_ref'][0]['reference']:
            fecha_factura = line['ml_inv_ref'][0]['date_invoice']\
                .replace('-', '')
            dia = fecha_factura[6:]
            mes = fecha_factura[4:6]
            ano = fecha_factura[:4]
            fecha_factura = dia + mes + ano
        text += fecha_factura
        # 38 - 45 Fecha vencimiento / Referencia factura
        if self.order.mode.conf_popular_type == '70':
            fecha_vencimiento = 8 * ' '
            if line['ml_inv_ref'][0]['reference']:
                fecha_vencimiento = line['date']\
                    .replace('-', '')
                dia = fecha_vencimiento[6:]
                mes = fecha_vencimiento[4:6]
                ano = fecha_vencimiento[:4]
                fecha_vencimiento = dia + mes + ano
            text += fecha_vencimiento
        elif self.order.mode.conf_popular_type in ['60', '61']:
            referencia_factura = 8 * ' '
            if line['ml_inv_ref'][0]['reference']:
                referencia_factura = line['ml_inv_ref'][0]['reference']\
                    .replace('-', '')
                if len(referencia_factura) < 8:
                    relleno = 8 - len(referencia_factura)
                    referencia_factura += relleno * ' '
                elif len(referencia_factura) > 8:
                    referencia_factura = referencia_factura[:8]
            text += referencia_factura
        # 46 - 59 Numero de factura
        num_factura = 14 * ' '
        if line['ml_inv_ref'][0]['reference']:
            num_factura = line['ml_inv_ref'][0]['number']\
                .replace('-', '')
            if len(num_factura) < 14:
                relleno = 14 - len(num_factura)
                num_factura += relleno * ' '
            if len(num_factura) > 14:
                num_factura = num_factura[-14:]
        text += num_factura
        # 60 - 71 Importe
        text += self.converter.convert(abs(line['amount']), 12)
        if line['amount'] >= 0:
            text += ' '
        else:
            text += '-'
        text = text.ljust(100) + '\r\n'

        return text
Ejemplo n.º 24
0
 def _pop_header(self):
     all_text = ''
     for i in range(3):
         text = '510'
         text += str(i + 1)
         vat = self.order.mode.bank_id.partner_id.vat
         if not vat:
             raise Log(('Error: VAT of account not established \
                 for the account %s.\
                 ') % self.order.mode.bank_id.acc_number)
         vat = vat.replace("ES", "")
         if len(vat) < 10:
             fill = 10 - len(vat)
             vat = (fill * ' ') + vat
         elif len(vat) > 10:
             vat = vat[:10]
         text += vat
         if (i + 1) == 1:
             text += datetime.date.today().strftime('%d%m%y')
             ref = self.order.reference
             ref = ref.replace('/', '_')
             if len(ref) <= 8:
                 fill = 8 - len(ref)
                 ref += fill * ' '
             elif len(ref) > 8:
                 ref = ref[:8]
             text += ref
             payer = self.order.mode.bank_id.partner_id.name
             if len(payer) <= 40:
                 fill = 40 - len(payer)
                 payer += fill * ' '
             elif len(payer) > 40:
                 payer = payer[:40]
             text += payer
             account = self.order.mode.bank_id.acc_number
             account = account.replace(' ', '')
             type_account = self.order.mode.bank_id.state
             if type_account == 'iban':
                 account = account[4:]
             init = account[:8]
             account = init + account[10:]
             text += account
         if (i + 1) == 2:
             street_payer = self.order.mode.bank_id.partner_id.street
             if not street_payer:
                 raise Log(('Error: Payer %s has not street established. \
                     ') % self.order.mode.bank_id.partner_id.name)
             else:
                 if len(street_payer) < 72:
                     fill = 72 - len(street_payer)
                     street_payer += fill * ' '
                 elif len(street_payer) > 72:
                     street_payer = street_payer[:72]
                 text += street_payer
             street_payer2 = self.order.mode.bank_id.partner_id.street2
             if street_payer2:
                 if len(street_payer2) < 72:
                     fill = 72 - len(street_payer2)
                     street_payer2 += fill * ' '
                 elif len(street_payer2) > 72:
                     street_payer2 = street_payer2[:72]
                 text += street_payer2
         if (i + 1) == 3:
             postalzip = self.order.mode.bank_id.partner_id.zip
             if not postalzip:
                 raise Log(
                     ('Error: Payer %s has not postal zip established. \
                     ') % self.order.mode.bank_id.partner_id.name)
             else:
                 if len(postalzip) < 5:
                     fill = 5 - len(postalzip)
                     postalzip += fill * ' '
                 elif len(postalzip) > 5:
                     postalzip = postalzip[:5]
                 text += postalzip
             city_payer = self.order.mode.bank_id.partner_id.city
             if not city_payer:
                 raise Log(('Error: Payer %s has not city established. \
                     ') % self.order.mode.bank_id.partner_id.name)
             else:
                 if len(city_payer) < 36:
                     fill = 36 - len(city_payer)
                     city_payer += fill * ' '
                 elif len(city_payer) > 36:
                     city_payer = city_payer[:36]
                 text += city_payer
             state_id = self.order.mode.bank_id.partner_id.state_id.name
             if not state_id:
                 raise Log(('Error: Payer %s has not state established. \
                     ') % self.order.mode.bank_id.partner_id.name)
             else:
                 if len(state_id) < 25:
                     fill = 25 - len(state_id)
                     state_id += fill * ' '
                 elif len(state_id) > 25:
                     state_id = state_id[:25]
                 text += state_id
         text = text.ljust(90) + '\r\n'
         all_text += text
     return all_text
Ejemplo n.º 25
0
    def _pop_cabecera(self):
        if self.order.date_prefered == 'due':
            fecha_planificada = self.order.line_ids \
                and self.order.line_ids[0].ml_maturity_date \
                or datetime.date.today().strftime('%Y-%d-%m')
            fecha_planificada = fecha_planificada.replace('-', '')
            dia = fecha_planificada[6:]
            mes = fecha_planificada[4:6]
            ano = fecha_planificada[:4]
            fecha_planificada = dia + mes + ano
        elif self.order.date_prefered == 'now':
            fecha_planificada = datetime.date.today().strftime('%d%m%Y')
        else:
            fecha_planificada = self.order.date_scheduled
            if not fecha_planificada:
                raise Log(
                    _("Error: Fecha planificada no \
                        establecida en la Orden de pago."))
            else:
                fecha_planificada = fecha_planificada.replace('-', '')
                dia = fecha_planificada[6:]
                mes = fecha_planificada[4:6]
                ano = fecha_planificada[:4]
                fecha_planificada = dia + mes + ano

        all_text = ''
        for i in range(4):
            text = ''
            # 1 y 2
            text += '13'
            # 3 -4 Codigo operacion
            if self.order.mode.conf_popular_type == '70':
                text += '70'
            else:
                text += '60'
            # 5 - 14 Codigo ordenante
            text += '0'
            vat = self.order.mode.bank_id.partner_id.vat[2:]
            text += self.converter.convert(vat, 9)
            # 15 - 17 Sufijo
            text += '001'
            # 18 -26 Libre
            text += 9 * ' '
            # 27 Numero del dato
            dato = '00' + str(i + 1)
            text += dato
            if (i + 1) == 1:
                text += datetime.date.today().strftime('%d%m%Y')
                text += fecha_planificada
                cuenta = self.order.mode.bank_id.acc_number
                cuenta = cuenta.replace(' ', '')
                tipo_cuenta = self.order.mode.bank_id.state
                if tipo_cuenta == 'iban':
                    cuenta = cuenta[4:]
                control = cuenta[8:10]
                principio = cuenta[:8]
                cuenta = principio + cuenta[10:]
                text += cuenta
                if self.order.mode.conf_popular_type == '70':
                    text += ' 01 '
                else:
                    text += '0   '
                text += control
                text += 3 * ' '
            if (i + 1) == 2:
                ordenante = self.order.mode.bank_id.partner_id.name
                if not ordenante:
                    raise Log(
                        _("Error: Propietario de la cuenta no establecido para\
                        la cuenta %s.") % self.order.mode.bank_id.acc_number)
                if len(ordenante) <= 36:
                    relleno = 36 - len(ordenante)
                    ordenante += relleno * ' '
                elif len(ordenante) > 36:
                    ordenante = ordenante[:36]
                text += ordenante
            if (i + 1) == 3:
                domicilio_pro = self.order.mode.bank_id.partner_id.street
                if not domicilio_pro:
                    raise Log(
                        _("Error: El Ordenante %s no tiene \
                        establecido el Domicilio.\
                         ") % self.order.mode.bank_id.partner_id.name)
                else:
                    if len(domicilio_pro) < 36:
                        relleno = 36 - len(domicilio_pro)
                        domicilio_pro += relleno * ' '
                    text += domicilio_pro
            if (i + 1) == 4:
                ciudad_pro = self.order.mode.bank_id.partner_id.city
                if not ciudad_pro:
                    raise Log(
                        _("Error: El Ordenante %s no tiene establecida la \
                        Ciudad.") % self.order.mode.bank_id.partner_id.name)
                else:
                    if len(ciudad_pro) < 36:
                        relleno = 36 - len(ciudad_pro)
                        ciudad_pro += relleno * ' '
                    text += ciudad_pro

            text = text.ljust(100) + '\r\n'
            all_text += text
        return all_text
Ejemplo n.º 26
0
 def _pop_header(self):
     if self.order.date_prefered == 'due':
         planned_date = self.order.line_ids \
             and self.order.line_ids[0].ml_maturity_date \
             or datetime.date.today().strftime('%Y-%d-%m')
         planned_date = planned_date.replace('-', '')
         day = planned_date[6:]
         month = planned_date[4:6]
         year = planned_date[0:4]
         planned_date = year + month + day
     elif self.order.date_prefered == 'now':
         planned_date = datetime.date.today().strftime('%Y%m%d')
     else:
         planned_date = self.order.date_scheduled
         if not planned_date:
             raise Log(
                 ("Error: Planned date not established in pay order."))
         else:
             planned_date = planned_date.replace('-', '')
             day = planned_date[6:]
             month = planned_date[4:6]
             year = planned_date[:4]
             planned_date = day + month + year
     all_text = ''
     for i in range(2):
         text = ''
         text += str(i + 1)
         if (i + 1) == 1:
             payer = self.order.mode.bank_id.partner_id.name
             if not payer:
                 raise Log(("Error: Owner of account not established \
                     for the account %s.\
                     ") % self.order.mode.bank_id.acc_number)
             if len(payer) <= 50:
                 fill = 50 - len(payer)
                 payer += fill * ' '
             elif len(payer) > 50:
                 payer = payer[:50]
             text += payer
             vat = self.order.mode.bank_id.partner_id.vat.replace('ES', '')
             if len(vat) <= 15:
                 fill = 15 - len(vat)
                 vat += fill * ' '
             elif len(vat) > 15:
                 vat = vat[:15]
             text += vat
             text += planned_date
             text += datetime.date.today().strftime('%Y%m%d')
             contract_number = str(self.order.mode.contract_number)
             if len(contract_number) <= 20:
                 contract_number = contract_number.rjust(20)
             elif len(contract_number) > 20:
                 contract_number = contract_number[-20:]
             text += contract_number
             account = self.order.mode.bank_id.acc_number
             account = account.replace(' ', '')
             if len(account) <= 34:
                 fill = 34 - len(account)
                 account += fill * ' '
             text += account
             text += u'EUR'
             text += '1'
             ref = self.order.mode.type.code
             ref += self.order.reference
             ref = ref.replace('/', '').replace('_', '')
             if len(ref) <= 30:
                 fill = 30 - len(ref)
                 ref += fill * ' '
             elif len(ref) > 30:
                 ref = ref[-30:]
             text += ref
             text += u'FU'
         if (i + 1) == 2:
             street_payer = self.order.mode.bank_id.partner_id.street
             if not street_payer:
                 raise Log(("Error: Payer %s has not street established. \
                     ") % self.order.mode.bank_id.partner_id.name)
             else:
                 if len(street_payer) < 65:
                     fill = 65 - len(street_payer)
                     street_payer += fill * ' '
                 elif len(street_payer) > 65:
                     street_payer = street_payer[:65]
                 text += street_payer
             city_payer = self.order.mode.bank_id.partner_id.city
             if not city_payer:
                 raise Log(("Error: Payer %s has not city established. \
                     ") % self.order.mode.bank_id.partner_id.name)
             else:
                 if len(city_payer) < 40:
                     fill = 40 - len(city_payer)
                     city_payer += fill * ' '
                 elif len(city_payer) > 40:
                     city_payer = city_payer[:40]
                 text += city_payer
             postalzip = self.order.mode.bank_id.partner_id.zip
             if not postalzip:
                 raise Log(
                     ("Error: Payer %s has not postal zip established. \
                     ") % self.order.mode.bank_id.partner_id.name)
             else:
                 if len(postalzip) < 10:
                     fill = 10 - len(postalzip)
                     postalzip += fill * ' '
                 elif len(street_payer) > 10:
                     street_payer = street_payer[:10]
                 text += postalzip
         text = text.ljust(250) + '\r\n'
         all_text += text
     return all_text