diff --git a/locale/es.po b/locale/es.po index 6a50b94..8f36591 100644 --- a/locale/es.po +++ b/locale/es.po @@ -362,14 +362,6 @@ msgctxt "field:purchase.line,health_register:" msgid "Health Register" msgstr "Registro Invima" -msgctxt "field:sale.line,product_equipment:" -msgid "Product Equipment" -msgstr "Es Equipo" - -msgctxt "field:sale.line,equipment:" -msgid "Equipment" -msgstr "Equipo" - msgctxt "model:ir.ui.menu,name:sale_subscription.menu_service_form" msgid "Subscription Services" msgstr "Servicios de Contrato" @@ -391,10 +383,247 @@ msgctxt "view:sale.subscription:" msgid "Equipments" msgstr "Equipos" + msgctxt "field:sale.subscription.line,subscription_start_date:" msgid "Subscription Start Date" msgstr "Fecha inicial del contrato" msgctxt "field:sale.subscription.line,subscription_end_date:" msgid "Subscription End Date" -msgstr "Fecha final del Contrato" \ No newline at end of file +msgstr "Fecha final del Contrato" + +msgctxt "model:ir.ui.menu,name:menu_contracts" +msgid "Contracts Management" +msgstr "Gestión de Contratos" + +msgctxt "model:ir.ui.menu,name:menu_create_contract_initial" +msgid "Initial Contract" +msgstr "Generar Primer Contrato" + +msgctxt "model:ir.ui.menu,name:menu_create_prorogue" +msgid "Prorogue to Contract" +msgstr "Generar Prorroga" + +msgctxt "model:ir.ui.menu,name:menu_contract_form" +msgid "Contracts" +msgstr "Contratos" + +msgctxt "model:ir.ui.menu,name:sale_subscription.menu_subscription_form" +msgid "Subscriptions" +msgstr "Prorrogas y Contratos" + +msgctxt "field:optical_equipment.contract,company:" +msgid "Company" +msgstr "Compañia" + +msgctxt "field:optical_equipment.contract,number:" +msgid "Number" +msgstr "Número" + +msgctxt "field:optical_equipment.contract,reference:" +msgid "Reference" +msgstr "Referencia" + +msgctxt "field:optical_equipment.contract,description:" +msgid "Description" +msgstr "Descripción" + +msgctxt "field:optical_equipment.contract,party:" +msgid "Party" +msgstr "Tercero" + +msgctxt "field:optical_equipment.contract,contact:" +msgid "Contact" +msgstr "Contacto" + +msgctxt "field:optical_equipment.contract,invoice_address:" +msgid "Invoice Address" +msgstr "Dirección de Facturación" + +msgctxt "field:optical_equipment.contract,invoice_recurrence:" +msgid "Invoice Recurrence" +msgstr "Recurrencia de Facturación" + +msgctxt "field:optical_equipment.contract,start_date:" +msgid "Start Date" +msgstr "Fecha Inicio" + +msgctxt "field:optical_equipment.contract,end_date:" +msgid "End Date" +msgstr "Fecha Final" + +msgctxt "field:optical_equipment.contract,state:" +msgid "State" +msgstr "Estado" + +msgctxt "field:optical_equipment.contract,contract:" +msgid "Contract" +msgstr "Contracto Inicial" + +msgctxt "field:optical_equipment.contract,prorogues:" +msgid "Prorrogation" +msgstr "Prorrogaciones" + +msgctxt "view:optical_equipment.contract:" +msgid "Contracts and Prorogues" +msgstr "Contratos y Prorrogas" + +msgctxt "view:optical_equipment.contract:" +msgid "Equipments" +msgstr "Equipos" + +msgctxt "field:optical_equipment.contract,equipments:" +msgid "Equipments" +msgstr "Equipos" + +msgctxt "view:optical_equipment.contract:" +msgid "Other Info" +msgstr "Otra Información" + +msgctxt "view:optical_equipment.contract:" +msgid "Current Contract" +msgstr "Contrato Principal" + +msgctxt "selection:optical_equipment.contract,state:" +msgid "Draft" +msgstr "Borrador" + +msgctxt "selection:optical_equipment.contract,state:" +msgid "Draft" +msgstr "Borrador" + +msgctxt "selection:optical_equipment.contract,state:" +msgid "Quotation" +msgstr "Presupuesto" + +msgctxt "selection:optical_equipment.contract,state:" +msgid "Running" +msgstr "En Ejecución" + +msgctxt "selection:optical_equipment.contract,state:" +msgid "Closed" +msgstr "Cerrado" + +msgctxt "selection:optical_equipment.contract,state:" +msgid "Cancelled" +msgstr "Cancelado" + +msgctxt "selection:optical_equipment.contract,state:" +msgid "Cancelled" +msgstr "Cancelado" + +msgctxt "field:optical_equipment.contract,prorogues:" +msgid "Prorrogation" +msgstr "Prorrogaciones" + +msgctxt "field:optical_equipment_prorogue.next,initial_contract:" +msgid "Initial Contract" +msgstr "Contrato Inicial" + +msgctxt "field:optical_equipment_prorogue.next,contact:" +msgid "Contact" +msgstr "Contacto" + +msgctxt "field:optical_equipment_prorogue.next,invoice_address:" +msgid "Invoice Address" +msgstr "Dirección de Facturación" + +msgctxt "field:optical_equipment_prorogue.next,invoice_recurrence:" +msgid "Invoice Recurrence" +msgstr "Recurrencia de Facturación" + +msgctxt "field:optical_equipment_prorogue.next,payment_term:" +msgid "Payment Term" +msgstr "Plazo de Pago" + +msgctxt "field:optical_equipment_prorogue.next,start_date:" +msgid "Start Date" +msgstr "Fecha Inicial" + +msgctxt "field:optical_equipment_prorogue.next,end_date:" +msgid "End Date" +msgstr "Fecha Final" + +msgctxt "field:optical_equipment_prorogue.next,invoice_start_date:" +msgid "Invoice Start Date" +msgstr "Fecha Inicio Facturación" + +msgctxt "field:optical_equipment_prorogue.next,service:" +msgid "Service" +msgstr "Servicio" + +msgctxt "field:optical_equipment_prorogue.next,quantity:" +msgid "Quantity" +msgstr "Cantidad" + +msgctxt "field:optical_equipment_prorogue.next,unit_price:" +msgid "Unit Price" +msgstr "Precio Unitario" + +msgctxt "field:optical_equipment_prorogue.next,equipments:" +msgid "Equipments" +msgstr "Equipos" + +msgctxt "field:optical_equipment_contract.initial,party:" +msgid "Party" +msgstr "Tercero" + +msgctxt "field:optical_equipment_contract.initial,contact:" +msgid "Contact" +msgstr "Contacto" + +msgctxt "field:optical_equipment_contract.initial,invoice_address:" +msgid "Invoice Address" +msgstr "Dirección de Facturación" + +msgctxt "field:optical_equipment_contract.initial,invoice_recurrence:" +msgid "Invoice Recurrence" +msgstr "Recurrencia de Facturación" + +msgctxt "field:optical_equipment_contract.initial,payment_term:" +msgid "Payment Term" +msgstr "Plazo de Pago" + +msgctxt "field:optical_equipment_contract.initial,start_date:" +msgid "Start Date" +msgstr "Fecha Inicial" + +msgctxt "field:optical_equipment_contract.initial,end_date:" +msgid "End Date" +msgstr "Fecha Final" + +msgctxt "field:optical_equipment_contract.initial,invoice_start_date:" +msgid "Invoice Start Date" +msgstr "Fecha Inicio Facturación" + +msgctxt "field:optical_equipment_contract.initial,service:" +msgid "Service" +msgstr "Servicio" + +msgctxt "field:optical_equipment_contract.initial,quantity:" +msgid "Quantity" +msgstr "Cantidad" + +msgctxt "field:optical_equipment_contract.initial,unit_price:" +msgid "Unit Price" +msgstr "Precio Unitario" + +msgctxt "field:optical_equipment_contract.initial,equipments:" +msgid "Equipments" +msgstr "Equipos" + +msgctxt "model:ir.action.act_window.domain,name:act_contract_form_domain_draft" +msgid "Draft" +msgstr "Borrador" + +msgctxt "model:ir.action.act_window.domain,name:act_contract_form_domain_quotation" +msgid "Quotation" +msgstr "Presupuesto" + +msgctxt "model:ir.action.act_window.domain,name:act_contract_form_domain_running" +msgid "Running" +msgstr "En Ejecución" + +msgctxt "model:ir.action.act_window.domain,name:act_contract_form_domain_all" +msgid "All" +msgstr "Todo" diff --git a/subscription.py b/subscription.py index 9b33934..5f486ee 100644 --- a/subscription.py +++ b/subscription.py @@ -16,10 +16,10 @@ import datetime class Contract(ModelSQL, ModelView): 'Contracts' - __name__ = 'sale.subscription.contract' + __name__ = 'optical_equipment.contract' company = fields.Many2One( - 'company.company', "Company", required=True, select=True, + 'company.company', "Company", readonly=True, required=True, select=True, states={ 'readonly': (Eval('state') != 'draft') | Eval('party', True), },help="Make the subscription belong to the company.") @@ -34,21 +34,20 @@ class Contract(ModelSQL, ModelView): 'readonly': Eval('state') != 'draft', }) party = fields.Many2One( - 'party.party', "Party", required=True, + 'party.party', "Party", readonly=True, required=True, help="The party who subscribes.") contact = fields.Many2One( - 'party.contact_mechanism', "Contact") - invoice_address = fields.Many2One('party.address', 'Invoice Address', + 'party.contact_mechanism', "Contact", readonly=True) + invoice_address = fields.Many2One('party.address', 'Invoice Address', readonly=True, required=True, domain=[('party', '=', Eval('party'))]) invoice_recurrence = fields.Many2One( - 'sale.subscription.recurrence.rule.set', "Invoice Recurrence", + 'sale.subscription.recurrence.rule.set', "Invoice Recurrence", readonly=True, required=True) - start_date = fields.Date( - "Start Date", required=False,) + start_date = fields.Date("Start Date", readonly=True, required=False,) end_date = fields.Date( - "End Date", + "End Date", readonly=True, domain=['OR', - ('end_date', '>=', If( + ('end_date', '>=', If( Bool(Eval('start_date')), Eval('start_date', datetime.date.min), datetime.date.min)), @@ -64,32 +63,41 @@ class Contract(ModelSQL, ModelView): ('running', "Running"), ('closed', "Closed"), ('cancelled', "Cancelled"), - ], "State", readonly=False, required=False, sort=False, + ], "State", readonly=True, required=False, sort=False, help="The current state of the subscription.") - contract = fields.Many2One('sale.subscription', "Contract") - prorogues = fields.Many2Many('sale.subscription-sale.subscription.contract', - 'contract', 'subscription', 'Prorrogation') - + contract = fields.Many2One('sale.subscription', "Contract", readonly=True) + prorogues = fields.Many2Many('sale.subscription-optical_equipment.contract', + 'contract', 'subscription', 'Prorrogation', readonly=True) equipments = fields.Many2Many('sale.subscription-optical_equipment.equipment', 'subscription', - 'equipment', "Equipments") + 'equipment', "Equipments", readonly=True, + domain=[['OR', + ('state', '=', 'registred'), + ('state', '=', 'uncontrated')] + ]) + @staticmethod def default_company(): return Transaction().context.get('company') + @staticmethod + def default_state(): + return 'draft' + + class CreateNextProrogue(ModelView): 'Create Next Prorogue' - __name__ = 'sale.create.prorogue.next' + __name__ = 'optical_equipment_prorogue.next' - initial_contract = fields.Many2One('sale.subscription.contract', "Initial Contract") + initial_contract = fields.Many2One('optical_equipment.contract', "Initial Contract") party = fields.Many2One('party.party', "Party", required=True, help="The party who subscribes.") - contact = fields.Many2One( - 'party.contact_mechanism', "Contact") + contact = fields.Many2One('party.contact_mechanism', "Contact") invoice_address = fields.Many2One('party.address', 'Invoice Address', required=True, domain=[('party', '=', Eval('party'))]) - invoice_recurrence = fields.Many2One( - 'sale.subscription.recurrence.rule.set', "Invoice Recurrence", + invoice_recurrence = fields.Many2One('sale.subscription.recurrence.rule.set', "Invoice Recurrence", required=True) + payment_term = fields.Many2One( + 'account.invoice.payment_term', "Payment Term") start_date = fields.Date("Start Date", required=True,) end_date = fields.Date("End Date", required=True, domain=['OR', @@ -101,6 +109,11 @@ class CreateNextProrogue(ModelView): ]) invoice_start_date = fields.Date("Invoice Start Date", required=True, help='Billing start date') + service = fields.Many2One('sale.subscription.service', "Service", required=True) + quantity = fields.Float("Quantity", digits='unit', required=True) + unit_price = Monetary("Unit Price", currency='currency', + digits=price_digits,required=True + ) equipments = fields.Many2Many('sale.subscription-optical_equipment.equipment', 'subscription', 'equipment', "Equipments", required=True, domain=[['OR', @@ -129,9 +142,9 @@ class CreateNextProrogue(ModelView): class CreateProrogue(Wizard): 'Create Prorogue' - __name__ = 'sale.create.prorogue' + __name__ = 'optical_equipment.prorogue' - start = StateView('sale.create.prorogue.next', + start = StateView('optical_equipment_prorogue.next', 'optical_equipment.create_prorogue_view_form', [Button('Cancel', 'end', 'tryton-cancel'), Button('Create', 'create_prorogue', 'tryton-ok', default=True), @@ -139,7 +152,7 @@ class CreateProrogue(Wizard): create_prorogue = StateAction('sale_subscription.act_subscription_form') - done_ = StateView('sale.create.prorogue.next', + done_ = StateView('optical_equipment_prorogue.next', 'optical_equipment.create_prorogue_view_form',[ Button('Done', 'end', 'tryton-cancel'), ]) @@ -167,7 +180,8 @@ class CreateProrogue(Wizard): a = self._subscription_start - equipments_to_subscription=self.start.equipments subscription_lines = [SubscriptionLine( + equipments_to_subscription=self.start.equipments + subscription_lines = [SubscriptionLine( start_date=a['start_date'], end_date=a['end_date'], consumption_recurrence=a['invoice_recurrence'], @@ -192,13 +206,30 @@ class CreateProrogue(Wizard): lines=subscription_lines, equipments=equipments_to_subscription, ) + subscription.save() - self.initial_contract.prorogues.append(subscription.id) - self.initial_contract.save() + + contract.start_date = a['start_date'] + contract.end_date = a['end_date'] + contract.invoice_addres = a['invoice_address'] + contract.contact = a['contact'] + contract.contact = a['invoice.recurrence'] + contract.state = subscription.state + + IdInitialContract = self.start.initial_contract.id + pool = Pool() + Contract = pool.get('optical_equipment.contract') + contract = Contract.search(['id', '=', IdInitialContract])[0] + contract.prorogues += (contract,) + + contract.equipments = equipment_to_subscription + + contract.save() + class CreateInitialContract(ModelView): 'Create Initial Contract' - __name__ = 'sale.create.contract.initial' + __name__ = 'optical_equipment_contract.initial' party = fields.Many2One( 'party.party', "Party", required=True, @@ -243,14 +274,14 @@ class CreateContract(Wizard): 'Create Contract' __name__ = 'sale.create.contract' - start = StateView('sale.create.contract.initial', + start = StateView('optical_equipment_contract.initial', 'optical_equipment.create_contract_view_form',[ Button('Cancel', 'end', 'tryton-cancel'), Button('Create', 'create_contract', 'tryton-ok', default=True), ]) create_contract = StateAction('sale_subscription.act_subscription_form') - done_ = StateView('sale.create.contract.initial', + done_ = StateView('optical_equipment_contract.initial', 'optical_equipment.create_contract_view_form',[ Button('Done', 'end', 'tryton-cancel'), ]) @@ -273,7 +304,7 @@ class CreateContract(Wizard): def _create_contract_base(self,dates, subscription): pool = Pool() - ContractBase = pool.get('sale.subscription.contract') + ContractBase = pool.get('optical_equipment.contract') a = self._subscription_start @@ -324,8 +355,8 @@ class CreateContract(Wizard): equipments=equipments_to_subscription, ) subscription.save() - self._create_contract_base(a, subscription.id) + class Subscription(metaclass=PoolMeta): __name__ = 'sale.subscription' @@ -441,7 +472,7 @@ class SubscriptionEquipment(ModelSQL): class ContractSupscription(ModelSQL): 'Prorrogation to the Contract' - __name__='sale.subscription-sale.subscription.contract' + __name__='sale.subscription-optical_equipment.contract' - contract = fields.Many2One('sale.subscription.contract', 'Contract', select=True) + contract = fields.Many2One('optical_equipment.contract', 'Contract', select=True) subscription = fields.Many2One('sale.subscription', 'Subscription', select=True) diff --git a/subscription.xml b/subscription.xml index aa47651..7c9cee3 100644 --- a/subscription.xml +++ b/subscription.xml @@ -2,18 +2,18 @@ - sale.subscription.contract + optical_equipment.contract form contract_form - sale.subscription.contract + optical_equipment.contract tree contract_list Contracts - sale.subscription.contract + optical_equipment.contract @@ -92,7 +92,7 @@ - sale.create.contract.initial + optical_equipment_contract.initial form create_subscription_form @@ -101,13 +101,13 @@ sale.create.contract - sale.create.prorogue.next + optical_equipment_prorogue.next form create_prorogue_form Prorogue to Contract - sale.create.prorogue + optical_equipment.prorogue