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. -->
-
+
diff --git a/view/optical_equipment_form.xml b/view/optical_equipment_form.xml
index 7a7b7f5..94e905a 100644
--- a/view/optical_equipment_form.xml
+++ b/view/optical_equipment_form.xml
@@ -72,7 +72,7 @@
-
+