diff --git a/contract.py b/contract.py index e9325ba..d780ff6 100644 --- a/contract.py +++ b/contract.py @@ -83,10 +83,12 @@ class Contract(Workflow, ModelSQL, ModelView): ] cls._transitions = ({ ('draft', 'running'), + ('running', 'draft'), ('running', 'closed'), ('running', 'cancelled'), }) cls._buttons.update({ + 'draft': {'invisible': Eval('state').in_(['draft','closed'])}, 'running': {'invisible': Eval('state').in_(['cancelled', 'running'])}, 'cancelled': {'invisible': Eval('state').in_(['draft', 'cancelled'])} }) @@ -116,6 +118,17 @@ class Contract(Workflow, ModelSQL, ModelView): else: raise UserError(gettext('optical_equipment.msg_not_sequence_equipment')) + @classmethod + @ModelView.button + @Workflow.transition('draft') + def draft(cls, contracts): + contract = contracts[0] + for equipment in contract.equipments: + equipment.state = "uncontrated" + equipment.contract_history += (contract.id,) + equipment.save() + + @classmethod @ModelView.button @Workflow.transition('running') diff --git a/contract.xml b/contract.xml index 5945c44..e0203b2 100644 --- a/contract.xml +++ b/contract.xml @@ -56,6 +56,11 @@ + + draft + Draft + + running Run diff --git a/equipment.py b/equipment.py index 089c6a0..af6a47a 100644 --- a/equipment.py +++ b/equipment.py @@ -180,12 +180,13 @@ class OpticalEquipment(DeactivableMixin, Workflow, ModelSQL, ModelView): super(OpticalEquipment, cls).__setup__() cls._transitions = ({ ('draft', 'registred'), + ('registred', 'draft'), ('registred', 'uncontrated'), ('uncontrated', 'contrated'), }) cls._buttons.update({ - # 'draft': { - # 'invisible': Eval('state') == 'draft'}, + 'draft': { + 'invisible': Eval('state') == 'draft'}, 'registred': { 'invisible': Eval('state').in_(['registred', 'uncontrated', 'contrated'])}} ) @@ -287,7 +288,13 @@ class OpticalEquipment(DeactivableMixin, Workflow, ModelSQL, ModelView): raise AccessError( gettext('estos equipos no se pueden borrar')) super(OpticalEquipment, cls).delete(equipments) - + + @classmethod + @ModelView.button + @Workflow.transition('draft') + def draft(cls, equipments): + pass + @classmethod @ModelView.button @Workflow.transition('registred') diff --git a/equipment.xml b/equipment.xml index 90bf93a..062e291 100644 --- a/equipment.xml +++ b/equipment.xml @@ -91,7 +91,11 @@ - + + draft + Draft + + registred Registred diff --git a/move.py b/move.py index bf3ec40..f67f58e 100644 --- a/move.py +++ b/move.py @@ -69,12 +69,8 @@ class ShipmentOut(metaclass=PoolMeta): cls._buttons.update({ 'maintenance_initial': { 'invisible': ((Eval('service_maintenance_initial',True)) - | (Eval('sale_type').in_(['maintenance', 'replaces'])))}, - 'assign_wizard': { - 'invisible': ((Eval('state') != 'waiting') - | (Eval('warehouse_storage') == Eval('warehouse_output'))) | - (If(Eval('service_maintenance_initial') == False, True)) - }, + | (Eval('sale_type').in_(['maintenance', 'replaces'])) + | (Eval('state') == 'done'))} }) def get_outgoing_moves(self, name): @@ -97,6 +93,48 @@ class ShipmentOut(metaclass=PoolMeta): 'invisible': False, }),] + @classmethod + @ModelView.button + @Workflow.transition('done') + @set_employee('done_by') + def done(cls, shipments): + pool = Pool() + Move = pool.get('stock.move') + Date = pool.get('ir.date') + + Equipments = pool.get('optical_equipment.equipment') + for shipment in shipments: + for move in shipment.inventory_moves: + count = 0 + if move.equipment: + equipment = move.equipment + Id = equipment.id + equipment = Equipments.search(['id', '=',Id])[0] + equipment.propietary = shipment.customer.id + equipment.propietary_address= shipment.delivery_address.id + equipment.state="uncontrated" + equipment.shipment_destination = shipment + equipment.sale_destination = shipment.outgoing_moves[count].origin + equipment.propietarys += (shipment.customer,) + equipment.maintenance_frequency = "6" if shipment.customer.client_type == "ips" else "12" + count+=1 + equipment.save() + else: + count+=1 + + Move.delete([ + m for s in shipments for m in s.outgoing_moves + if m.state == 'staging']) + + Move.do([m for s in shipments for m in s.outgoing_moves]) + for company, c_shipments in groupby( + shipments, key=lambda s: s.company): + with Transaction().set_context(company=company.id): + today = Date.today() + cls.write([s for s in c_shipments if not s.effective_date], { + 'effective_date': today, + }) + @classmethod @ModelView.button def maintenance_initial(cls, shipments): @@ -147,24 +185,6 @@ class ShipmentOut(metaclass=PoolMeta): else: raise UserError(str('Por favor Primero debe Asignar un serial a todos los Equipos.')) - for move in shipment.inventory_moves: - count = 0 - if move.equipment: - equipment = move.equipment - Id = equipment.id - equipment = Equipments.search(['id', '=',Id])[0] - equipment.propietary = shipment.customer.id - equipment.propietary_address= shipment.delivery_address.id - equipment.state="uncontrated" - equipment.shipment_destination = shipment - equipment.sale_destination = shipment.outgoing_moves[count].origin - equipment.propietarys += (shipment.customer,) - equipment.maintenance_frequency = "6" if shipment.customer.client_type == "ips" else "12" - count+=1 - equipment.save() - else: - count+=1 - def _get_inventory_move(self, move): 'Return inventory move for the outgoing move if necessary' pool = Pool() diff --git a/report/Sale.fodt b/report/Sale.fodt index 00742ac..1511992 100644 --- a/report/Sale.fodt +++ b/report/Sale.fodt @@ -1,28 +1,28 @@ - LibreOffice/7.3.7.2$Linux_X86_64 LibreOffice_project/30$Build-22008-06-07T15:28:222009-01-10T16:03:331PT0S + LibreOffice/7.3.7.2$Linux_X86_64 LibreOffice_project/30$Build-22008-06-07T15:28:222009-01-10T16:03:331PT0S - 71967 + 17921 0 - 24370 - 11737 + 18934 + 7675 true false view2 - 2191 - 80728 + 10368 + 21475 0 - 71967 - 24368 - 83702 + 17921 + 18932 + 25594 0 0 false - 200 + 180 false false false @@ -88,7 +88,7 @@ true true - 2960185 + 2995385 true false @@ -164,7 +164,7 @@ - + @@ -558,717 +558,706 @@ - - + + - - - + + - + + - - - + + + - - - + + + - - - + + + - - + + - + - - - + + + - + + - - + + + - - + + - - - + + + - - + - - + + - - - - - - - - - - - - - - - - - - - + - + - + - - - + + + - - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + + + + + - + - + + - + - + - - + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + + + + + + + + + + + + + + + + + + + + + + + + @@ -1285,92 +1274,92 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1427,7 +1416,7 @@ - + /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgK CgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkL EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAAR @@ -2120,42 +2109,42 @@ - <for each="sale in records"> + <for each="sale in records"> - Fecha: <format_date(sale.sale_date or today, sale.party.lang)> + Fecha: <format_date(sale.sale_date or today, sale.party.lang)> - - - NIT: 901091201-1 - Regimen Común - Actividad Economica 4659 - CARRERA 16 No 52-85 PISO 4 - Tel: 601-7049417 - 3208197664 - BOGOTA + + + NIT: 901091201-1 + Regimen Común + Actividad Economica 4659 + CARRERA 16 No 52-85 PISO 4 + Tel: 601-7049417 - 3208197664 + BOGOTA - Cotizado a: <sale.party.name> - <if test="sale.party.tax_identifier"> - Nit o Cedula: <sale.party.tax_identifier.code> - </if> - Dirección: <sale.invoice_address.street> - Ciudad: <sale.invoice_address.subdivision_municipality.name> - Telefono: <sale.contact.value> + Cotizado a: <sale.party.name> + <if test="sale.party.tax_identifier"> + Nit o Cedula: <sale.party.tax_identifier.code> + </if> + Dirección: <sale.invoice_address.street> + Ciudad: <sale.invoice_address.subdivision_municipality.name> + Telefono: <sale.contact.value> - - Somos SMART VISION, la compañía que está revolucionando el mercado óptico en Colombia, ofrecemos productos y servicios ópticos con la mejor calidad y tecnología de punta. Nuestra mayor prioridad es satisfacer las necesidades de nuestros clientes - Agradecemos sinceramente el habernos elegido como opción; a continuación, relacionamos los productos solicitados. - " SMART VISION cambia tu forma de ver el mundo" + + Somos SMART VISION, la compañía que está revolucionando el mercado óptico en Colombia, ofrecemos productos y servicios ópticos con la mejor calidad y tecnología de punta. Nuestra mayor prioridad es satisfacer las necesidades de nuestros clientes + Agradecemos sinceramente el habernos elegido como opción; a continuación, relacionamos los productos solicitados. + " SMART VISION cambia tu forma de ver el mundo" @@ -2169,37 +2158,37 @@ - Descripción + Descripción - Modelo + Modelo - Marca + Marca - Origen + Origen - Garantia + Garantia - Cantidad + Cantidad - Precio u/n + Precio u/n - IVA + IVA - Total + Total - <for each="line in sale.lines"> + <for each="line in sale.lines"> @@ -2212,7 +2201,7 @@ - <choose test=""> + <choose test=""> @@ -2225,7 +2214,7 @@ - <when test="line.type == 'line'"> + <when test="line.type == 'line'"> @@ -2238,53 +2227,61 @@ - <if test="line.product"> - <line.product.rec_name> - </if> - <if test="line.description"> - <for each="description in line.description.split('\n')"> - <description> - </for> - </if> + <if test="line.product"> + <line.product.rec_name> + </if> + <if test="line.description"> + <for each="description in line.description.split('\n')"> + <description> + </for> + </if> - <if test="line.product.model_category"> - <line.product.model_category.name> - </if> + <if test="line.product"> + <if test="line.product.model_category"> + <line.product.model_category.name> + </if> + </if> - <if test="line.product.mark_category"> - <line.product.mark_category.name> - </if> + <if test="line.product"> + <if test="line.product.mark_category"> + <line.product.mark_category.name> + </if> + </if> - <if test="line.product.origin_country"> - <line.product.origin_country.name> - </if> + <if test="line.product"> + <if test="line.product.origin_country"> + <line.product.origin_country.name> + </if> + </if> - <if test="line.product.warranty"> - <line.product.warranty>Meses - </if> + <if test="line.product"> + <if test="line.product.warranty"> + <line.product.warranty>Meses + </if> + </if> - <format_number_symbol(line.quantity, sale.party.lang, line.unit, digits=line.unit.digits) if line.unit else format_number(line.quantity, sale.party.lang)> + <format_number_symbol(line.quantity, sale.party.lang, line.unit, digits=line.unit.digits) if line.unit else format_number(line.quantity, sale.party.lang)> - <format_currency(line.unit_price, sale.party.lang, sale.currency)> + <format_currency(line.unit_price, sale.party.lang, sale.currency)> - <for each="tax in line.taxes"> - <tax.description> - </for> + <for each="tax in line.taxes"> + <tax.description> + </for> - <format_currency(line.amount, sale.party.lang, sale.currency)> + <format_currency(line.amount, sale.party.lang, sale.currency)> - </when> + </when> @@ -2297,7 +2294,7 @@ - <when test="line.type == 'subtotal'"> + <when test="line.type == 'subtotal'"> @@ -2310,10 +2307,10 @@ - <for each="description in (line.description or '').split('\n')"> - <description> - </for> - <format_currency(line.amount, sale.party.lang, sale.currency)> + <for each="description in (line.description or '').split('\n')"> + <description> + </for> + <format_currency(line.amount, sale.party.lang, sale.currency)> @@ -2326,7 +2323,7 @@ - </when> + </when> @@ -2339,7 +2336,7 @@ - <when test="line.type == 'title'"> + <when test="line.type == 'title'"> @@ -2352,9 +2349,9 @@ - <for each="description in (line.description or '').split('\n')"> - <description> - </for> + <for each="description in (line.description or '').split('\n')"> + <description> + </for> @@ -2367,7 +2364,7 @@ - </when> + </when> @@ -2380,7 +2377,7 @@ - <otherwise test=""> + <otherwise test=""> @@ -2393,9 +2390,9 @@ - <for each="description in (line.description or '').split('\n')"> - <description> - </for> + <for each="description in (line.description or '').split('\n')"> + <description> + </for> @@ -2408,7 +2405,7 @@ - </otherwise> + </otherwise> @@ -2421,7 +2418,7 @@ - </choose> + </choose> @@ -2434,7 +2431,7 @@ - </for> + </for> @@ -2447,7 +2444,7 @@ - Total antes Impuestos: + Total antes Impuestos: @@ -2455,14 +2452,14 @@ - <format_currency(sale.untaxed_amount, sale.party.lang, sale.currency)> + <format_currency(sale.untaxed_amount, sale.party.lang, sale.currency)> - Total impuestos: + Total impuestos: @@ -2470,14 +2467,15 @@ - <format_currency(sale.tax_amount, sale.party.lang, sale.currency)> + <format_currency(sale.tax_amount, sale.party.lang, sale.currency)> + - Total: + Total: @@ -2485,45 +2483,45 @@ - <format_currency(sale.total_amount, sale.party.lang, sale.currency)> + <format_currency(sale.total_amount, sale.party.lang, sale.currency)> - <for each="comment in (sale.comment or '').split('\n')"> - </for> - - CONDICIONES DE NEGOCIACION Y PAGO: - Tiempo de entrega: <sale.description> - Forma de pago: <sale.payment_term.name if sale.payment_term else ""> - Medios de pago: - Efectivo, Consignación o transferencia a la cuenta corriente Bancolombia # 053813599-86 a nombre de SMART VISION SAS - - DOCUMENTACIÓN ENTREGADA CON LOS EQUIPOS - - Factura - - Certificado de capacitación - - Manifiesto de importación (si aplica) - - Hoja de vida de cada equipo - - Certificado de calibración (Para equipos usados) - Otras condiciones: - - El costo del envío es responsabilidad del comprador (para otras ciudades diferentes a Bogotá). - - Garantía no incluye bombillos o piezas de desgaste por uso. - - Con el envío de los equipos se entregarán las hojas de vida. - - La Factura de venta definitiva será entregada al confirmar el pago total. - - OBSERVACIONES ADICIONALES - - <sale.comment> - - VIGENCIA DE LA COTIZACIÓN: 30 Días - </for> - Cordialmente + <for each="comment in (sale.comment or '').split('\n')"> + </for> + + CONDICIONES DE NEGOCIACION Y PAGO: + Tiempo de entrega: <sale.description> + Forma de pago: <sale.payment_term.name if sale.payment_term else ""> + Medios de pago: + Efectivo, Consignación o transferencia a la cuenta corriente Bancolombia # 053813599-86 a nombre de SMART VISION SAS + + DOCUMENTACIÓN ENTREGADA CON LOS EQUIPOS + - Factura + - Certificado de capacitación + - Manifiesto de importación (si aplica) + - Hoja de vida de cada equipo + - Certificado de calibración (Para equipos usados) + Otras condiciones: + - El costo del envío es responsabilidad del comprador (para otras ciudades diferentes a Bogotá). + - Garantía no incluye bombillos o piezas de desgaste por uso. + - Con el envío de los equipos se entregarán las hojas de vida. + - La Factura de venta definitiva será entregada al confirmar el pago total. + + OBSERVACIONES ADICIONALES + - <sale.comment> + + VIGENCIA DE LA COTIZACIÓN: 30 Días + </for> + Cordialmente - + iVBORw0KGgoAAAANSUhEUgAABA4AAAI+CAYAAAA8dEjXAAKLKElEQVR4nOz9B4Bd13UeCn97 n3PvnV4ADHolwQawgypUBWXKsmRZcgMSx3qOXCIlTpzELY5f/j+Did9L3OTYUiyHcpEtK3YC qFik1QtAkaIosYoEwAIQvc8Mps9t55z91lp7n5kLYFBIAkRbH3lw5557et3ft9f6Vuycg0Kh @@ -5616,19 +5614,19 @@ - - - - - JESUS ANTONIO GIRALDO GARCIA - C.E.O. (Gerente General) + + + + + JESUS ANTONIO GIRALDO GARCIA + C.E.O. (Gerente General) - + - + \ No newline at end of file diff --git a/report/Sale_Internal.fodt b/report/Sale_Internal.fodt index e5fadfb..5770d47 100644 --- a/report/Sale_Internal.fodt +++ b/report/Sale_Internal.fodt @@ -1,24 +1,24 @@ - LibreOffice/7.3.7.2$Linux_X86_64 LibreOffice_project/30$Build-22008-06-07T15:28:222009-01-10T16:03:331PT0S + LibreOffice/7.3.7.2$Linux_X86_64 LibreOffice_project/30$Build-22008-06-07T15:28:222009-01-10T16:03:331PT0S - 62865 + 11959 0 - 24370 - 11220 + 17041 + 6378 true false view2 - 15416 - 44164 + 11615 + 22130 0 - 62865 - 24368 - 74083 + 11959 + 17039 + 18336 0 0 false @@ -88,7 +88,7 @@ true true - 2989584 + 3133502 true false @@ -376,21 +376,6 @@ - - - - - - - - - - - - - - - @@ -427,6 +412,21 @@ + + + + + + + + + + + + + + + @@ -500,761 +500,733 @@ - - - + + + - - + + + + + + - + - + - + - + - + - + - + - - - - - + - + - + - + - + - + - + + + + + - + - + - - - - - + + + + + - + - + - - - - - - + + - + - - - + + + - - - + + + - + - + + + + + + + + + + + + + - + + + + + - + - + - + - + - + - + - + - + - + - + - + + + + + - + - + - + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + + - - - + + + - - + + + - - + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2112,36 +2084,36 @@ - Fecha: <format_date(sale.sale_date or today, sale.party.lang)> + Fecha: <format_date(sale.sale_date or today, sale.party.lang)> - - - NIT: 901091201-1 - Regimen Común - Actividad Economica 4659 - CARRERA 16 No 52-85 PISO 4 - Tel: 601-7049417 - 3208197664 - BOGOTA + + + NIT: 901091201-1 + Regimen Común + Actividad Economica 4659 + CARRERA 16 No 52-85 PISO 4 + Tel: 601-7049417 - 3208197664 + BOGOTA - Cotizado a: <sale.party.name> - <if test="sale.party.tax_identifier"> - Nit o Cedula: <sale.party.tax_identifier.code> - </if> - Dirección: <sale.invoice_address.street> - Ciudad: <sale.invoice_address.subdivision_municipality.name> - Telefono: <sale.contact.value> + Cotizado a: <sale.party.name> + <if test="sale.party.tax_identifier"> + Nit o Cedula: <sale.party.tax_identifier.code> + </if> + Dirección: <sale.invoice_address.street> + Ciudad: <sale.invoice_address.subdivision_municipality.name> + Telefono: <sale.contact.value> - - Somos SMART VISION, la compañía que está revolucionando el mercado óptico en Colombia, ofrecemos productos y servicios ópticos con la mejor calidad y tecnología de punta. Nuestra mayor prioridad es satisfacer las necesidades de nuestros clientes - Agradecemos sinceramente el habernos elegido como opción; a continuación, relacionamos los productos solicitados. - " SMART VISION cambia tu forma de ver el mundo" + + Somos SMART VISION, la compañía que está revolucionando el mercado óptico en Colombia, ofrecemos productos y servicios ópticos con la mejor calidad y tecnología de punta. Nuestra mayor prioridad es satisfacer las necesidades de nuestros clientes + Agradecemos sinceramente el habernos elegido como opción; a continuación, relacionamos los productos solicitados. + " SMART VISION cambia tu forma de ver el mundo" @@ -2152,34 +2124,34 @@ - Descripción + Descripción - Modelo + Modelo - Marca + Marca - Origen + Origen - Garantia + Garantia - Cantidad + Cantidad - Precio u/n + Precio u/n - Total + Total - <for each="line in sale.lines"> + <for each="line in sale.lines"> @@ -2192,7 +2164,7 @@ - <choose test=""> + <choose test=""> @@ -2205,7 +2177,7 @@ - <when test="line.type == 'line'"> + <when test="line.type == 'line'"> @@ -2218,50 +2190,57 @@ - <if test="line.product"> - <line.product.rec_name> - </if> - <if test="line.description"> - <for each="description in line.description.split('\n')"> - <description> - </for> - </if> + <if test="line.product"> + <line.product.rec_name> + </if> + <if test="line.description"> + <for each="description in line.description.split('\n')"> + <description> + </for> + </if> - <if test="line.product.model_category"> - <line.product.model_category.name> - </if> + <if test="line.product"> + <if test="line.product.model_category"> + <line.product.model_category.name> + </if> + </if> - <if test="line.product.mark_category"> - <line.product.mark_category.name> - </if> + <if test="line.product"> + <if test="line.product.mark_category"> + <line.product.mark_category.name> + </if> + </if> - <if test="line.product.origin_country"> - <line.product.origin_country.name> - </if> + <if test="line.product"> + <if test="line.product.origin_country"> + <line.product.origin_country.name> + </if> + </if> - <if test="line.product.warranty"> - <line.product.warranty>Meses - </if> + <if test="line.product"> + <if test="line.product.warranty"> + <line.product.warranty>Meses + </if> - <format_number_symbol(line.quantity, sale.party.lang, line.unit, digits=line.unit.digits) if line.unit else format_number(line.quantity, sale.party.lang)> + <format_number_symbol(line.quantity, sale.party.lang, line.unit, digits=line.unit.digits) if line.unit else format_number(line.quantity, sale.party.lang)> - <format_currency(line.unit_price, sale.party.lang, sale.currency)> + <format_currency(line.unit_price, sale.party.lang, sale.currency)> - <format_currency(line.amount, sale.party.lang, sale.currency)> + <format_currency(line.amount, sale.party.lang, sale.currency)> - </when> + </when> @@ -2274,7 +2253,7 @@ - <when test="line.type == 'subtotal'"> + <when test="line.type == 'subtotal'"> @@ -2287,10 +2266,10 @@ - <for each="description in (line.description or '').split('\n')"> - <description> - </for> - <format_currency(line.amount, sale.party.lang, sale.currency)> + <for each="description in (line.description or '').split('\n')"> + <description> + </for> + <format_currency(line.amount, sale.party.lang, sale.currency)> @@ -2303,7 +2282,7 @@ - </when> + </when> @@ -2316,7 +2295,7 @@ - <when test="line.type == 'title'"> + <when test="line.type == 'title'"> @@ -2329,7 +2308,7 @@ - </when> + </when> @@ -2342,7 +2321,7 @@ - <otherwise test=""> + <otherwise test=""> @@ -2355,9 +2334,9 @@ - <for each="description in (line.description or '').split('\n')"> - <description> - </for> + <for each="description in (line.description or '').split('\n')"> + <description> + </for> @@ -2370,7 +2349,7 @@ - </otherwise> + </otherwise> @@ -2383,7 +2362,7 @@ - </choose> + </choose> @@ -2396,7 +2375,7 @@ - </for> + </for> @@ -2409,7 +2388,7 @@ - Total antes Impuestos: + Total antes Impuestos: @@ -2418,13 +2397,13 @@ - <format_currency(sale.untaxed_amount, sale.party.lang, sale.currency)> + <format_currency(sale.untaxed_amount, sale.party.lang, sale.currency)> - Total impuestos: + Total impuestos: @@ -2433,13 +2412,13 @@ - <format_currency(sale.tax_amount, sale.party.lang, sale.currency)> + <format_currency(sale.tax_amount, sale.party.lang, sale.currency)> - Total: + Total: @@ -2448,45 +2427,45 @@ - <format_currency(sale.total_amount, sale.party.lang, sale.currency)> + <format_currency(sale.total_amount, sale.party.lang, sale.currency)> - + <for each="comment in (sale.comment or '').split('\n')"> </for> - CONDICIONES DE NEGOCIACION Y PAGO: - Tiempo de entrega: <sale.description> - Forma de pago: <sale.payment_term.name if sale.payment_term else ""> - Medios de pago: - Efectivo, Consignación o transferencia a la cuenta corriente Bancolombia # 053813599-86 a nombre de SMART VISION SAS - - DOCUMENTACIÓN ENTREGADA CON LOS EQUIPOS - - Factura - - Certificado de capacitación - - Manifiesto de importación (si aplica) - - Hoja de vida de cada equipo - - Certificado de calibración (Para equipos usados) - Otras condiciones: - - El costo del envío es responsabilidad del comprador (para otras ciudades diferentes a Bogotá). - - Garantía no incluye bombillos o piezas de desgaste por uso. - - Con el envío de los equipos se entregarán las hojas de vida. - - La Factura de venta definitiva será entregada al confirmar el pago total. - - OBSERVACIONES ADICIONALES - - <sale.comment> - - VIGENCIA DE LA COTIZACIÓN: 30 Días - </for> - Cordialmente + CONDICIONES DE NEGOCIACION Y PAGO: + Tiempo de entrega: <sale.description> + Forma de pago: <sale.payment_term.name if sale.payment_term else ""> + Medios de pago: + Efectivo, Consignación o transferencia a la cuenta corriente Bancolombia # 053813599-86 a nombre de SMART VISION SAS + + DOCUMENTACIÓN ENTREGADA CON LOS EQUIPOS + - Factura + - Certificado de capacitación + - Manifiesto de importación (si aplica) + - Hoja de vida de cada equipo + - Certificado de calibración (Para equipos usados) + Otras condiciones: + - El costo del envío es responsabilidad del comprador (para otras ciudades diferentes a Bogotá). + - Garantía no incluye bombillos o piezas de desgaste por uso. + - Con el envío de los equipos se entregarán las hojas de vida. + - La Factura de venta definitiva será entregada al confirmar el pago total. + + OBSERVACIONES ADICIONALES + - <sale.comment> + + VIGENCIA DE LA COTIZACIÓN: 30 Días + </for> + Cordialmente - + iVBORw0KGgoAAAANSUhEUgAABA4AAAI+CAYAAAA8dEjXAAKLKElEQVR4nOz9B4Bd13UeCn97 n3PvnV4ADHolwQawgypUBWXKsmRZcgMSx3qOXCIlTpzELY5f/j+Did9L3OTYUiyHcpEtK3YC qFik1QtAkaIosYoEwAIQvc8Mps9t55z91lp7n5kLYFBIAkRbH3lw5557et3ft9f6Vuycg0Kh @@ -5579,19 +5558,19 @@ - - - - - JESUS ANTONIO GIRALDO GARCIA - C.E.O. (Gerente General) + + + + + JESUS ANTONIO GIRALDO GARCIA + C.E.O. (Gerente General) - + - + \ No newline at end of file diff --git a/view/contract_form.xml b/view/contract_form.xml index 375cb44..e36fe71 100644 --- a/view/contract_form.xml +++ b/view/contract_form.xml @@ -40,7 +40,7 @@ this repository contains the full copyright notices and license terms. -->