224 lines
11 KiB
Python
224 lines
11 KiB
Python
# This file is part of ncf_manager module for Tryton. The COPYRIGHT file at the top level of
|
|
# this repository contains the full copyright notices and license terms.
|
|
from string import Template
|
|
import time
|
|
|
|
from sql import Literal, For
|
|
|
|
from trytond.exceptions import UserError
|
|
from trytond.model.exceptions import ValidationError
|
|
from trytond.model import ModelView, ModelSQL, DeactivableMixin, fields, Check
|
|
from trytond.pyson import Eval, And
|
|
from trytond.transaction import Transaction
|
|
from trytond.pool import Pool, PoolMeta
|
|
from trytond.i18n import gettext
|
|
from trytond import backend
|
|
|
|
|
|
class Sequence(metaclass=PoolMeta):
|
|
__name__ = 'ir.sequence'
|
|
|
|
from_number = fields.Integer('From Number',
|
|
states={
|
|
'required': Eval('prefix').in_(['B01', 'B02', 'B03', 'B04',
|
|
'B11', 'B12', 'B13', 'B14', 'B15', 'B16', 'B17', 'E31',
|
|
'E32', 'E33', 'E34', 'E41', 'E43', 'E44', 'E45', 'E46', 'E47']),
|
|
'invisible': ~Eval('prefix').in_(['B01', 'B02', 'B03', 'B04',
|
|
'B11', 'B12', 'B13', 'B14', 'B15', 'B16', 'B17', 'E31',
|
|
'E32', 'E33', 'E34', 'E41', 'E43', 'E44', 'E45', 'E46', 'E47'])
|
|
}, depends=['prefix'])
|
|
|
|
until_number = fields.Integer('Until Number',
|
|
states={
|
|
'required': Eval('prefix').in_(['B01', 'B02', 'B03', 'B04',
|
|
'B11', 'B12', 'B13', 'B14', 'B15', 'B16', 'B17', 'E31',
|
|
'E32', 'E33', 'E34', 'E41', 'E43', 'E44', 'E45', 'E46', 'E47']),
|
|
'invisible': ~Eval('prefix').in_(['B01', 'B02', 'B03', 'B04',
|
|
'B11', 'B12', 'B13', 'B14', 'B15', 'B16', 'B17', 'E31',
|
|
'E32', 'E33', 'E34', 'E41', 'E43', 'E44', 'E45', 'E46', 'E47'])
|
|
}, depends=['prefix'])
|
|
|
|
approved_qty = fields.Function(fields.Integer('Approved Quantity',
|
|
states={
|
|
'invisible': ~Eval('prefix').in_(['B01', 'B02', 'B03', 'B04',
|
|
'B11', 'B12', 'B13', 'B14', 'B15', 'B16', 'B17', 'E31',
|
|
'E32', 'E33', 'E34', 'E41', 'E43', 'E44', 'E45', 'E46', 'E47'])
|
|
}), 'on_change_with_approved_qty')
|
|
|
|
expiration_date = fields.Date('Expiration Date',
|
|
states={
|
|
'required': Eval('prefix').in_(['B01', 'B03',
|
|
'B11', 'B12', 'B13', 'B14', 'B15', 'B16', 'B17', 'E31',
|
|
'E33', 'E41', 'E43', 'E44', 'E45', 'E46', 'E47']),
|
|
'invisible': ~Eval('prefix').in_(['B01', 'B02', 'B03', 'B04',
|
|
'B11', 'B12', 'B13', 'B14', 'B15', 'B16', 'B17', 'E31',
|
|
'E32', 'E33', 'E34', 'E41', 'E43', 'E44', 'E45', 'E46', 'E47'])
|
|
}, depends=['prefix'])
|
|
|
|
remaining_qty = fields.Function(fields.Integer('Remaining Quantity',
|
|
states={
|
|
'invisible': ~Eval('prefix').in_(['B01', 'B02', 'B03', 'B04',
|
|
'B11', 'B12', 'B13', 'B14', 'B15', 'B16', 'B17', 'E31',
|
|
'E32', 'E33', 'E34', 'E41', 'E43', 'E44', 'E45', 'E46', 'E47'])
|
|
}), 'on_change_with_remaining_qty')
|
|
|
|
@fields.depends('sequence_type')
|
|
def on_change_with_name(self, name=None):
|
|
if not self.sequence_type or not self.sequence_type.name:
|
|
return None
|
|
if self.sequence_type.name == 'Factura de Crédito Fiscal':
|
|
return 'Factura de Crédito Fiscal'
|
|
elif self.sequence_type.name == 'Factura de Consumo':
|
|
return 'Factura de Consumo'
|
|
elif self.sequence_type.name == 'Nota de Débito':
|
|
return 'Nota de Débito'
|
|
elif self.sequence_type.name == 'Nota de Crédito':
|
|
return 'Nota de Crédito'
|
|
elif self.sequence_type.name == 'Comprobante de Compras':
|
|
return 'Comprobante de Compras'
|
|
elif self.sequence_type.name == 'Registro Único de Ingreso':
|
|
return 'Registro Único de Ingreso'
|
|
elif self.sequence_type.name == 'Comprobante para Gasto Menor':
|
|
return 'Comprobante para Gasto Menor'
|
|
elif self.sequence_type.name == 'Comprobante de Regímen Especial':
|
|
return 'Comprobante de Regímen Especial'
|
|
elif self.sequence_type.name == 'Comprobante Gubernamental':
|
|
return 'Comprobante Gubernamental'
|
|
elif self.sequence_type.name == 'Comprobante para exportaciones':
|
|
return 'Comprobante para exportaciones'
|
|
elif self.sequence_type.name == 'Comprobante para Pagos al Exterior':
|
|
return 'Comprobante para Pagos al Exterior'
|
|
elif self.sequence_type.name == 'Factura de Crédito Fiscal Electrónica':
|
|
return 'Factura de Crédito Fiscal Electrónica'
|
|
elif self.sequence_type.name == 'Factura de Consumo Electrónica':
|
|
return 'Factura de Consumo Electrónica'
|
|
elif self.sequence_type.name == 'Nota de Débito Electrónica':
|
|
return 'Nota de Débito Electrónica'
|
|
elif self.sequence_type.name == 'Nota de Crédito Electrónica':
|
|
return 'Nota de Crédito Electrónica'
|
|
elif self.sequence_type.name == 'Compras Electrónico':
|
|
return 'Compras Electrónico'
|
|
elif self.sequence_type.name == 'Gastos Menores Electrónico':
|
|
return 'Gastos Menores Electrónico'
|
|
elif self.sequence_type.name == 'Regímenes Especiales Electrónico':
|
|
return 'Regímenes Especiales Electrónico'
|
|
elif self.sequence_type.name == 'Gubernamental Electrónico':
|
|
return 'Gubernamental Electrónico'
|
|
elif self.sequence_type.name == 'Exportación Electrónico':
|
|
return 'Exportación Electrónico'
|
|
elif self.sequence_type.name == 'Pagos al Exterior Electrónico':
|
|
return 'Pagos al Exterior Electrónico'
|
|
|
|
|
|
@fields.depends('sequence_type')
|
|
def on_change_with_prefix(self, name=None):
|
|
if not self.sequence_type or not self.sequence_type.name:
|
|
return None
|
|
if self.sequence_type.name == 'Factura de Crédito Fiscal':
|
|
return 'B01'
|
|
elif self.sequence_type.name == 'Factura de Consumo':
|
|
return 'B02'
|
|
elif self.sequence_type.name == 'Nota de Débito':
|
|
return 'B03'
|
|
elif self.sequence_type.name == 'Nota de Crédito':
|
|
return 'B04'
|
|
elif self.sequence_type.name == 'Comprobante de Compras':
|
|
return 'B11'
|
|
elif self.sequence_type.name == 'Registro Único de Ingreso':
|
|
return 'B12'
|
|
elif self.sequence_type.name == 'Comprobante para Gasto Menor':
|
|
return 'B13'
|
|
elif self.sequence_type.name == 'Comprobante de Regímen Especial':
|
|
return 'B14'
|
|
elif self.sequence_type.name == 'Comprobante Gubernamental':
|
|
return 'B15'
|
|
elif self.sequence_type.name == 'Comprobante para exportaciones':
|
|
return 'B16'
|
|
elif self.sequence_type.name == 'Comprobante para Pagos al Exterior':
|
|
return 'B17'
|
|
elif self.sequence_type.name == 'Factura de Crédito Fiscal Electrónica':
|
|
return 'E31'
|
|
elif self.sequence_type.name == 'Factura de Consumo Electrónica':
|
|
return 'E32'
|
|
elif self.sequence_type.name == 'Nota de Débito Electrónica':
|
|
return 'E33'
|
|
elif self.sequence_type.name == 'Nota de Crédito Electrónica':
|
|
return 'E34'
|
|
elif self.sequence_type.name == 'Compras Electrónico':
|
|
return 'E41'
|
|
elif self.sequence_type.name == 'Gastos Menores Electrónico':
|
|
return 'E43'
|
|
elif self.sequence_type.name == 'Regímenes Especiales Electrónico':
|
|
return 'E44'
|
|
elif self.sequence_type.name == 'Gubernamental Electrónico':
|
|
return 'E45'
|
|
elif self.sequence_type.name == 'Exportación Electrónico':
|
|
return 'E46'
|
|
elif self.sequence_type.name == 'Pagos al Exterior Electrónico':
|
|
return 'E47'
|
|
|
|
|
|
@fields.depends('sequence_type')
|
|
def on_change_with_padding(self, name=None):
|
|
if not self.sequence_type or not self.sequence_type.name:
|
|
return 0
|
|
if self.sequence_type.name == 'Factura de Crédito Fiscal':
|
|
return 8
|
|
elif self.sequence_type.name == 'Factura de Consumo':
|
|
return 8
|
|
elif self.sequence_type.name == 'Nota de Débito':
|
|
return 8
|
|
elif self.sequence_type.name == 'Nota de Crédito':
|
|
return 8
|
|
elif self.sequence_type.name == 'Comprobante de Compras':
|
|
return 8
|
|
elif self.sequence_type.name == 'Registro Único de Ingreso':
|
|
return 8
|
|
elif self.sequence_type.name == 'Comprobante para Gasto Menor':
|
|
return 8
|
|
elif self.sequence_type.name == 'Comprobante de Regímen Especial':
|
|
return 8
|
|
elif self.sequence_type.name == 'Comprobante Gubernamental':
|
|
return 8
|
|
elif self.sequence_type.name == 'Comprobante para exportaciones':
|
|
return 8
|
|
elif self.sequence_type.name == 'Comprobante para Pagos al Exterior':
|
|
return 8
|
|
elif self.sequence_type.name == 'Factura de Crédito Fiscal Electrónica':
|
|
return 10
|
|
elif self.sequence_type.name == 'Factura de Consumo Electrónica':
|
|
return 10
|
|
elif self.sequence_type.name == 'Nota de Débito Electrónica':
|
|
return 10
|
|
elif self.sequence_type.name == 'Nota de Crédito Electrónica':
|
|
return 10
|
|
elif self.sequence_type.name == 'Compras Electrónico':
|
|
return 10
|
|
elif self.sequence_type.name == 'Gastos Menores Electrónico':
|
|
return 10
|
|
elif self.sequence_type.name == 'Regímenes Especiales Electrónico':
|
|
return 10
|
|
elif self.sequence_type.name == 'Gubernamental Electrónico':
|
|
return 10
|
|
elif self.sequence_type.name == 'Exportación Electrónico':
|
|
return 10
|
|
elif self.sequence_type.name == 'Pagos al Exterior Electrónico':
|
|
return 10
|
|
|
|
@fields.depends('from_number', 'until_number')
|
|
def on_change_with_approved_qty(self, name=None):
|
|
if self.from_number and self.until_number:
|
|
return self.until_number - self.from_number + 1
|
|
|
|
@fields.depends('number_next', 'until_number')
|
|
def on_change_with_remaining_qty(self, name=None):
|
|
if self.until_number and self.number_next:
|
|
return self.until_number - self.number_next + 1
|
|
|
|
class SequenceStrict(Sequence):
|
|
"Sequence Strict"
|
|
__name__ = 'ir.sequence.strict'
|
|
_table = None # Needed to reset Sequence._table
|
|
_strict = True
|
|
|