diff --git a/source/app/controllers/cfdi_xml.py b/source/app/controllers/cfdi_xml.py
index a335be1..90abbce 100644
--- a/source/app/controllers/cfdi_xml.py
+++ b/source/app/controllers/cfdi_xml.py
@@ -111,10 +111,10 @@ SAT = {
'schema': ' http://www.sat.gob.mx/leyendasFiscales http://www.sat.gob.mx/sitio_internet/cfd/leyendasFiscales/leyendasFisc.xsd',
},
'cartaporte': {
- 'version': '2.0',
- 'prefix': 'cartaporte20',
- 'xmlns': 'http://www.sat.gob.mx/CartaPorte20',
- 'schema': ' http://www.sat.gob.mx/CartaPorte20 http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte20.xsd',
+ 'version': '3.0',
+ 'prefix': 'cartaporte30',
+ 'xmlns': 'http://www.sat.gob.mx/CartaPorte30',
+ 'schema': ' http://www.sat.gob.mx/CartaPorte30 http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte30.xsd',
},
'comercioe': {
'version': '2.0',
@@ -575,6 +575,11 @@ class CFDI(object):
mercancias = datos.pop('mercancias', ())
tiposfigura = datos.pop('tiposfigura', ())
+ autotransporte = datos.pop('autotransporte', {})
+ identificacion = autotransporte.pop('identificacion')
+ seguros = autotransporte.pop('seguros')
+ remolques = autotransporte.pop('remolques')
+
atributos = {'Version': SAT['cartaporte']['version']}
atributos.update(datos)
@@ -592,10 +597,6 @@ class CFDI(object):
attr = mercancias
mercancias = attr.pop('mercancias')
- autotransporte = attr.pop('autotransporte')
- identificacion = autotransporte.pop('identificacion')
- seguros = autotransporte.pop('seguros')
- remolque = autotransporte.pop('remolque')
node = ET.SubElement(node_carta, f'{prefix}:Mercancias', attr)
for mercancia in mercancias:
@@ -604,10 +605,10 @@ class CFDI(object):
sub_node = ET.SubElement(node, f'{prefix}:Autotransporte', autotransporte)
ET.SubElement(sub_node, f'{prefix}:IdentificacionVehicular', identificacion)
ET.SubElement(sub_node, f'{prefix}:Seguros', seguros)
- if 'SubTipoRem' in remolque and 'Placa' in remolque \
- and remolque['SubTipoRem'] and remolque['Placa']:
- tmp = ET.SubElement(sub_node, f'{prefix}:Remolques')
- ET.SubElement(tmp, f'{prefix}:Remolque', remolque)
+ if remolques:
+ node_remolques = ET.SubElement(sub_node, f'{prefix}:Remolques')
+ for remolque in remolques:
+ ET.SubElement(node_remolques, f'{prefix}:Remolque', remolque)
if tiposfigura:
sub_node = ET.SubElement(node_carta, f'{prefix}:FiguraTransporte')
diff --git a/source/app/controllers/util.py b/source/app/controllers/util.py
index 2e1220c..b1e8d46 100644
--- a/source/app/controllers/util.py
+++ b/source/app/controllers/util.py
@@ -2422,6 +2422,7 @@ def upload_file(rfc, opt, file_obj):
'_4.0_cn_1.2.ods',
'_4.0_cp_2.0.ods',
'_4.0_ccp_2.0.ods',
+ '_4.0_ccp_3.0.ods',
'_4.0_cd_1.1.ods',
'_4.0_cce_2.0.ods',
'_4.0.json',
@@ -3144,4 +3145,8 @@ def parse_xml2(xml_str):
return etree.fromstring(xml_str.encode('utf-8'))
+def get_idccp():
+ uuid_v4 = uuid.uuid4()
+ custom_uuid_str = f"CCC{uuid_v4.hex[3:8].upper()}-{uuid_v4.hex[8:12].upper()}-{uuid_v4.hex[12:16].upper()}-{uuid_v4.hex[16:20].upper()}-{uuid_v4.hex[20:32].upper()}"
+ return custom_uuid_str
diff --git a/source/app/models/main.py b/source/app/models/main.py
index c9d8756..4551753 100644
--- a/source/app/models/main.py
+++ b/source/app/models/main.py
@@ -5575,16 +5575,37 @@ class Facturas(BaseModel):
if not valores:
return
+ info = {}
values = utils.loads(valores)
+ info['IdCCP'] = util.get_idccp()
+ info['TranspInternac'] = values['TranspInternac']
+ autotransporte = {
+ 'PermSCT': values['autotransporte'].pop('PermSCT'),
+ 'NumPermisoSCT': values['autotransporte'].pop('NumPermisoSCT'),
+ }
+ identificacion = values['autotransporte']
+ if 'PesoBrutoVehicular' in identificacion \
+ and isinstance(identificacion['PesoBrutoVehicular'], float):
+ identificacion['PesoBrutoVehicular'] = f"{identificacion['PesoBrutoVehicular']:.2f}"
+ info['autotransporte'] = autotransporte
+ info['autotransporte']['identificacion'] = identificacion
+ info['autotransporte']['seguros'] = values['seguros']
+ info['autotransporte']['remolques'] = values['remolques']
total_distance = 0.00
total_weight = 0.00
mercancias = values['mercancias']
- for mercancia in mercancias['mercancias']:
+ for mercancia in mercancias:
total_weight += float(mercancia['PesoEnKg'])
if isinstance(mercancia['PesoEnKg'], (int, float)):
mercancia['PesoEnKg'] = f"{mercancia['PesoEnKg']:.2f}"
- mercancias['PesoBrutoTotal'] = f"{total_weight:.2f}"
+ mercancia['Cantidad'] = f"{mercancia['Cantidad']:.2f}"
+
+ info['mercancias'] = {}
+ info['mercancias']['UnidadPeso'] = values['unidad_peso']
+ info['mercancias']['PesoBrutoTotal'] = f"{total_weight:.2f}"
+ info['mercancias']['NumTotalMercancias'] = f"{len(mercancias):,}"
+ info['mercancias']['mercancias'] = mercancias
ubicaciones = values['ubicaciones']
for ubicacion in ubicaciones:
@@ -5608,12 +5629,15 @@ class Facturas(BaseModel):
'CodigoPostal': cp,
}
- values['TotalDistRec'] = f"{total_distance:.2f}"
- # ~ print(2, values)
+ info['TotalDistRec'] = f"{total_distance:.2f}"
+ info['ubicaciones'] = ubicaciones
+ info['tiposfigura'] = values['tiposfigura']
+
+ # ~ print(2, info)
data = {
'factura': invoice,
'nombre': 'cartaporte',
- 'valores': utils.dumps(values),
+ 'valores': utils.dumps(info),
}
FacturasComplementos.create(**data)
return
diff --git a/source/static/js/controller/invoices.js b/source/static/js/controller/invoices.js
index 03b2c05..125fb21 100644
--- a/source/static/js/controller/invoices.js
+++ b/source/static/js/controller/invoices.js
@@ -100,9 +100,11 @@ var invoices_controllers = {
//~ CartaPorte
$$('grid_ccp_ubicaciones').attachEvent('onBeforeEditStop', grid_ccp_ubicaciones_before_edit_stop)
$$('grid_ccp_ubicaciones').attachEvent('onItemClick', grid_ccp_ubicaciones_click)
- $$('cmd_ccp_agregar_ubicacion').attachEvent('onItemClick', cmd_ccp_agregar_ubicacion_click)
$$('grid_ccp_mercancias').attachEvent('onItemClick', grid_ccp_mercancias_click)
+ $$('grid_ccp_remolques').attachEvent('onItemClick', grid_ccp_remolques_click)
+ $$('cmd_ccp_agregar_ubicacion').attachEvent('onItemClick', cmd_ccp_agregar_ubicacion_click)
$$('cmd_ccp_add_product').attachEvent('onItemClick', cmd_ccp_add_product_click)
+ $$('cmd_ccp_agregar_remolque').attachEvent('onItemClick', cmd_ccp_agregar_remolque_click)
//~ $$('cmd_carta_copy_from_invoice').attachEvent('onItemClick', cmd_carta_copy_from_invoice_click)
$$('cmd_carta_import_json').attachEvent('onItemClick', cmd_carta_import_json_click)
@@ -401,16 +403,6 @@ function validate_invoice(values){
return false
}
- var usar_cartaporte = $$('chk_cfdi_usar_cartaporte').getValue()
- if(usar_cartaporte){
- value = $$('lst_carta_UnidadPeso').getValue()
- if(!value){
- msg = 'Es necesario seleccionar una Unidad de Peso'
- msg_error(msg)
- return false
- }
- }
-
var tipo_comprobante = $$('lst_tipo_comprobante').getValue()
if(tipo_comprobante != 'T'){
if(values.id_partner == 0){
@@ -593,10 +585,99 @@ function validate_invoice(values){
var values = _get_values_comercio_exterior()
}
+ //~ validate carta porte
+ var usar_cartaporte = $$('chk_cfdi_usar_cartaporte').getValue()
+ if(usar_cartaporte){
+ var result = _get_values_carta_porte()
+ if(!result.ok){
+ return false
+ }
+ }
+
return true
}
+function _get_values_carta_porte(){
+ var ok = false
+ var values = new Object()
+
+ unidad_peso = $$('lst_carta_UnidadPeso').getValue()
+ if(!unidad_peso){
+ msg = 'Es necesario seleccionar una Unidad de Peso'
+ msg_error(msg)
+ return {ok: ok, values: values}
+ }
+
+ var ubicaciones = $$('grid_ccp_ubicaciones').data.getRange()
+ if (ubicaciones.length < 2){
+ msg = 'Se requieren al menos dos ubicaciones'
+ msg_error(msg)
+ return {ok: ok, values: values}
+ }
+ ubicaciones.forEach(function(row, index){
+ delete row['id']
+ delete row['delete']
+ //~ delete row['IDUbicacion']
+ })
+
+ var mercancias = $$('grid_ccp_mercancias').data.getRange()
+ if (mercancias.length < 1){
+ msg = 'Se requieren al menos una mercancía'
+ msg_error(msg)
+ return {ok: ok, values: values}
+ }
+ mercancias.forEach(function(row, index){
+ delete row['id']
+ delete row['delete']
+ })
+
+ var autotransporte = $$('grid_ccp_autotransporte').data.getRange()[0]
+ delete autotransporte['id']
+ if(autotransporte['PermSCT'] === undefined){
+ msg = 'El campo PermSCT es requerido'
+ msg_error(msg)
+ return {ok: ok, values: values}
+ }
+
+ var remolques = $$('grid_ccp_remolques').data.getRange()
+ remolques.forEach(function(row, index){
+ delete row['id']
+ })
+
+ var seguros = $$('grid_ccp_seguros').data.getRange()[0]
+ delete seguros['id']
+ if(seguros['AseguraRespCivil'] === undefined){
+ msg = 'El campo AseguraRespCivil es requerido'
+ msg_error(msg)
+ return {ok: ok, values: values}
+ }
+ if(seguros['PolizaRespCivil'] === undefined){
+ msg = 'El campo PolizaRespCivil es requerido'
+ msg_error(msg)
+ return {ok: ok, values: values}
+ }
+
+ var tipos_figuras = $$('grid_ccp_tipos_figuras').data.getRange()
+ tipos_figuras.forEach(function(row, index){
+ delete row['id']
+ })
+
+ values['TranspInternac'] = $$('lst_cp_TranspInternac').getValue()
+ values['unidad_peso'] = unidad_peso
+ values['ubicaciones'] = ubicaciones
+ values['mercancias'] = mercancias
+ values['autotransporte'] = autotransporte
+ values['remolques'] = remolques
+ values['seguros'] = seguros
+ values['tiposfigura'] = tipos_figuras
+
+ ok = true
+
+ return {ok: ok, values: values}
+}
+
+
function update_grid_invoices(values){
if(values.new){
gi.add(values.row)
@@ -803,66 +884,66 @@ function guardar_y_timbrar(values){
if(usar_cartaporte){
//~ var total_distance = 0.00
//~ var total_weight = 0.00
- var cartaporte = {
- TranspInternac: $$('lst_carta_TranspInternac').getValue(),
+ //~ var cartaporte = {
+ //~ TranspInternac: $$('lst_carta_TranspInternac').getValue(),
//~ TotalDistRec: total_distance,
- }
- var ubicaciones = $$('grid_carta_ubicaciones').data.getRange()
- ubicaciones.forEach(function(row, index){
- delete row['id']
- delete row['delete']
+ //~ }
+ //~ var ubicaciones = $$('grid_carta_ubicaciones').data.getRange()
+ //~ ubicaciones.forEach(function(row, index){
+ //~ delete row['id']
+ //~ delete row['delete']
//~ if(row['DistanciaRecorrida']){
//~ total_distance += parseFloat(row['DistanciaRecorrida'])
//~ }
- })
+ //~ })
//~ cartaporte['TotalDistRec'] = total_distance
- cartaporte['ubicaciones'] = ubicaciones
+ //~ cartaporte['ubicaciones'] = ubicaciones
- var row = $$('grid_carta_autotransporte').data.getRange()[0]
- var autotransporte = {
- PermSCT: row['PermSCT'],
- NumPermisoSCT: row['NumPermisoSCT'],
- identificacion: {
- ConfigVehicular: row['ConfigVehicular'],
- PlacaVM: row['PlacaVM'],
- AnioModeloVM: row['AnioModeloVM'],
- },
- seguros: {
- AseguraRespCivil: row['AseguraRespCivil'],
- PolizaRespCivil: row['PolizaRespCivil'],
- },
- remolque: {
- SubTipoRem: row['SubTipoRem'],
- Placa: row['Placa'],
- }
- }
+ //~ var row = $$('grid_carta_autotransporte').data.getRange()[0]
+ //~ var autotransporte = {
+ //~ PermSCT: row['PermSCT'],
+ //~ NumPermisoSCT: row['NumPermisoSCT'],
+ //~ identificacion: {
+ //~ ConfigVehicular: row['ConfigVehicular'],
+ //~ PlacaVM: row['PlacaVM'],
+ //~ AnioModeloVM: row['AnioModeloVM'],
+ //~ },
+ //~ seguros: {
+ //~ AseguraRespCivil: row['AseguraRespCivil'],
+ //~ PolizaRespCivil: row['PolizaRespCivil'],
+ //~ },
+ //~ remolque: {
+ //~ SubTipoRem: row['SubTipoRem'],
+ //~ Placa: row['Placa'],
+ //~ }
+ //~ }
- var mercancias = $$('grid_carta_mercancias').data.getRange()
- mercancias.forEach(function(row, index){
- delete row['id']
- delete row['delete']
- row['Cantidad'] = String(row['Cantidad'])
+ //~ var mercancias = $$('grid_carta_mercancias').data.getRange()
+ //~ mercancias.forEach(function(row, index){
+ //~ delete row['id']
+ //~ delete row['delete']
+ //~ row['Cantidad'] = String(row['Cantidad'])
//~ row['ValorMercancia'] = String(row['ValorMercancia'])
//~ if(row['PesoEnKg']){
//~ total_weight += parseFloat(row['PesoEnKg'])
//~ }
- })
- var mercancias = {
- 'PesoBrutoTotal': 0.00,
- 'UnidadPeso': $$('lst_carta_UnidadPeso').getValue(),
- 'NumTotalMercancias': String(mercancias.length),
- mercancias: mercancias,
- autotransporte: autotransporte,
- }
- cartaporte['mercancias'] = mercancias
+ //~ })
+ //~ var mercancias = {
+ //~ 'PesoBrutoTotal': 0.00,
+ //~ 'UnidadPeso': $$('lst_carta_UnidadPeso').getValue(),
+ //~ 'NumTotalMercancias': String(mercancias.length),
+ //~ mercancias: mercancias,
+ //~ autotransporte: autotransporte,
+ //~ }
+ //~ cartaporte['mercancias'] = mercancias
- var tiposfigura = $$('grid_carta_tipos_figuras').data.getRange()
- tiposfigura.forEach(function(row, index){
- delete row['id']
- })
- cartaporte['tiposfigura'] = tiposfigura
-
- data['cartaporte'] = cartaporte
+ //~ var tiposfigura = $$('grid_carta_tipos_figuras').data.getRange()
+ //~ tiposfigura.forEach(function(row, index){
+ //~ delete row['id']
+ //~ })
+ //~ cartaporte['tiposfigura'] = tiposfigura
+ var result = _get_values_carta_porte()
+ data['cartaporte'] = result.values
}
var usar_comercioe = $$('chk_cfdi_usar_comercioe').getValue()
@@ -933,6 +1014,11 @@ function cmd_timbrar_click(id, e, node){
msg += 'Estas usando el complemento:
Comercio Exterior
'
}
+ usar_carta_porte = $$('chk_cfdi_usar_cartaporte').getValue()
+ if(usar_carta_porte){
+ msg += 'Estas usando el complemento:
Carta Porte
'
+ }
+
if(tipo_comprobante == 'T'){
msg += 'El Tipo de Comprobante es Traslado, el total será puesto a 0 (Cero), asegurate de que sea el tipo de comprobante correcto
'
}
@@ -2822,6 +2908,14 @@ function cmd_ccp_add_product_click(){
}
+function cmd_ccp_agregar_remolque_click(){
+ var g = $$('grid_ccp_remolques')
+ if(g.count() < 2){
+ g.add({delete: '-'})
+ }
+}
+
+
function _copy_from_invoice(){
var g1 = $$('grid_details')
var g2 = $$('grid_carta_mercancias')
@@ -2881,6 +2975,14 @@ function grid_ccp_mercancias_click(id, e, node){
}
+function grid_ccp_remolques_click(id, e, node){
+ if(id.column != 'delete'){
+ return
+ }
+ this.remove(id.row)
+}
+
+
function _set_carta_porte_from_json(data){
try{
var values = JSON.parse(data)
@@ -2894,26 +2996,17 @@ function _set_carta_porte_from_json(data){
return
}
- var mercancias = values['mercancias']
+ $$('lst_cp_TranspInternac').setValue(values['TranspInternac'])
+ $$('lst_carta_UnidadPeso').setValue(values['UnidadPeso'])
+
var ubicaciones = values['ubicaciones']
+ var mercancias = values['mercancias']
var autotransporte = values['autotransporte']
- var operador = values['operador']
+ var remolques = values['remolques']
+ var seguros = values['seguros']
+ var figura = values['figura']
- $$('lst_carta_UnidadPeso').setValue(values['unidad_de_peso'])
- var grid = $$('grid_carta_mercancias')
- grid.clearAll()
- mercancias.forEach(function(row, index){
- var data = new Object()
- data['delete'] = '-'
- data['BienesTransp'] = row.clave_sat
- data['Descripcion'] = row.descripcion
- data['Cantidad'] = row.cantidad
- data['ClaveUnidad'] = row.clave_unidad
- data['PesoEnKg'] = row.peso_en_kg
- grid.add(data)
- })
-
- var grid = $$('grid_carta_ubicaciones')
+ var grid = $$('grid_ccp_ubicaciones')
grid.clearAll()
ubicaciones.forEach(function(row, index){
var data = new Object()
@@ -2932,32 +3025,55 @@ function _set_carta_porte_from_json(data){
grid.add(data)
})
- var grid = $$('grid_carta_autotransporte')
+ var grid = $$('grid_ccp_mercancias')
+ grid.clearAll()
+ mercancias.forEach(function(row, index){
+ var data = new Object()
+ data['delete'] = '-'
+ data['BienesTransp'] = row.clave_sat
+ data['Descripcion'] = row.descripcion
+ data['Cantidad'] = row.cantidad
+ data['ClaveUnidad'] = row.clave_unidad
+ data['PesoEnKg'] = row.peso_en_kg
+ grid.add(data)
+ })
+
+ var grid = $$('grid_ccp_autotransporte')
grid.clearAll()
var data = new Object()
- data['PermSCT'] = autotransporte.tipo_permiso
- data['NumPermisoSCT'] = autotransporte.numero
- data['ConfigVehicular'] = autotransporte.clave
- data['PlacaVM'] = autotransporte.placa
- data['AnioModeloVM'] = autotransporte.modelo
- if('remolque' in autotransporte){
- data['SubTipoRem'] = autotransporte.remolque
- data['Placa'] = autotransporte.placa_remolque
- }
- data['AseguraRespCivil'] = autotransporte.aseguradora
- data['PolizaRespCivil'] = autotransporte.poliza
+ data['PermSCT'] = autotransporte.PermSCT
+ data['NumPermisoSCT'] = autotransporte.NumPermisoSCT
+ data['ConfigVehicular'] = autotransporte.ConfigVehicular
+ data['PesoBrutoVehicular'] = autotransporte.PesoBrutoVehicular
+ data['PlacaVM'] = autotransporte.PlacaVM
+ data['AnioModeloVM'] = autotransporte.AnioModeloVM
grid.add(data)
- var grid = $$('grid_carta_tipos_figuras')
+ var grid = $$('grid_ccp_remolques')
+ //~ if(remolques.length > 0){
+ grid.clearAll()
+ remolques.forEach(function(row, index){
+ var data = new Object()
+ data['SubTipoRem'] = row.SubTipoRem
+ data['Placa'] = row.Placa
+ grid.add(data)
+ })
+ //~ }
+
+ var grid = $$('grid_ccp_seguros')
grid.clearAll()
var data = new Object()
- data['TipoFigura'] = '01'
- if('tipo' in operador){
- data['TipoFigura'] = operador.tipo
- }
- data['RFCFigura'] = operador.rfc
- data['NombreFigura'] = operador.nombre
- data['NumLicencia'] = operador.licencia
+ data['AseguraRespCivil'] = seguros.AseguraRespCivil
+ data['PolizaRespCivil'] = seguros.PolizaRespCivil
+ grid.add(data)
+
+ var grid = $$('grid_ccp_tipos_figuras')
+ grid.clearAll()
+ var data = new Object()
+ data['TipoFigura'] = figura.TipoFigura
+ data['RFCFigura'] = figura.RFCFigura
+ data['NumLicencia'] = figura.NumLicencia
+ data['NombreFigura'] = figura.NombreFigura
grid.add(data)
$$('chk_cfdi_usar_cartaporte').setValue(1)
diff --git a/source/static/js/ui/admin.js b/source/static/js/ui/admin.js
index 3c3f04c..43a3c17 100644
--- a/source/static/js/ui/admin.js
+++ b/source/static/js/ui/admin.js
@@ -604,6 +604,7 @@ var opt_templates_cfdi = [
{id: '_4.0_cn_1.2.ods', value: 'CFDI v4.0 - Nómina v1.2'},
{id: '_4.0_cp_2.0.ods', value: 'CFDI v4.0 - Pagos v2.0'},
{id: '_4.0_ccp_2.0.ods', value: 'CFDI v4.0 - Carta Porte v2.0'},
+ {id: '_4.0_ccp_3.0.ods', value: 'CFDI v4.0 - Carta Porte v3.0'},
{id: '_4.0_cd_1.1.ods', value: 'CFDI v4.0 - Donativos v1.1'},
{id: '_4.0_cce_2.0.ods', value: 'CFDI v4.0 - Comercio Exterior v2.0'},
{id: '_4.0.json', value: 'CFDI v4.0 - JSON'},
diff --git a/source/static/js/ui/invoices.js b/source/static/js/ui/invoices.js
index 70834d4..78823a3 100644
--- a/source/static/js/ui/invoices.js
+++ b/source/static/js/ui/invoices.js
@@ -965,16 +965,16 @@ var grid_cols_ccp_ubicaciones = [
{id: 'id', header: 'ID', hidden: true},
{id: 'delete', header: '', width: 30, css: 'delete'},
{id: 'TipoUbicacion', header: 'TipoUbicacion', editor: 'select', options: opt_ccp_origen_destino, fillspace: 1},
- {id: 'IDUbicacion', header: 'IDUbicacion', hidden: true, editor: 'text', fillspace: 1},
+ //~ {id: 'IDUbicacion', header: 'IDUbicacion', hidden: true, editor: 'text', fillspace: 1},
{id: 'RFCRemitenteDestinatario', header: 'RFC Rem/Des', editor: 'text', fillspace: 1},
{id: 'NombreRemitenteDestinatario', header: 'Nombre Rem/Des', editor: 'text', fillspace: 1},
- {id: 'NumRegIdTrib', header: 'NumRegIdTrib', hidden: true, editor: 'text', fillspace: 1},
- {id: 'ResidenciaFiscal', header: 'ResidenciaFiscal', hidden: true, editor: 'text', fillspace: 1},
- {id: 'NumEstacion', header: 'NumEstacion', hidden: true, editor: 'text', fillspace: 1},
- {id: 'NombreEstacion', header: 'NombreEstacion', hidden: true, editor: 'text', fillspace: 1},
- {id: 'NavegacionTrafico', header: 'NavegacionTrafico', hidden: true, editor: 'text', fillspace: 1},
+ //~ {id: 'NumRegIdTrib', header: 'NumRegIdTrib', hidden: true, editor: 'text', fillspace: 1},
+ //~ {id: 'ResidenciaFiscal', header: 'ResidenciaFiscal', hidden: true, editor: 'text', fillspace: 1},
+ //~ {id: 'NumEstacion', header: 'NumEstacion', hidden: true, editor: 'text', fillspace: 1},
+ //~ {id: 'NombreEstacion', header: 'NombreEstacion', hidden: true, editor: 'text', fillspace: 1},
+ //~ {id: 'NavegacionTrafico', header: 'NavegacionTrafico', hidden: true, editor: 'text', fillspace: 1},
{id: 'FechaHoraSalidaLlegada', header: 'Fecha/Hora', editor: 'date', suggest: date_suggest, format: webix.Date.dateToStr("%D, %d-%M-%Y %h:%i"), footer: 'Total distancia:', fillspace: 1},
- {id: 'TipoEstacion', header: 'TipoEstacion', hidden: true, editor: 'text', fillspace: 1},
+ //~ {id: 'TipoEstacion', header: 'TipoEstacion', hidden: true, editor: 'text', fillspace: 1},
{id: 'DistanciaRecorrida', header: 'Distancia (KM)', editor: 'text', format: webix.i18n.numberFormat, css: 'right', footer: {content: 'summColumn', css: 'right'}, fillspace: 1},
{id: 'Municipio', header: 'Municipio', editor: 'text', fillspace: 1},
{id: 'Estado', header: 'Estado', editor: 'select', options: opt_ccp_carta_estados, fillspace: 1},
@@ -1135,6 +1135,7 @@ var grid_cols_ccp_autotransporte = [
]
var grid_cols_ccp_remolques = [
{id: 'id', header: 'ID', hidden: true},
+ {id: 'delete', header: '', width: 30, css: 'delete'},
{id: 'SubTipoRem', header: 'SubTipo Remolque', editor: 'select', options: opt_ccp_tipo_remolque, fillspace: 1},
{id: 'Placa', header: 'Placa', editor: 'text', fillspace: 1},
]
@@ -1167,10 +1168,10 @@ var grid_cols_ccp_tipos_figuras = [
{id: 'NombreFigura', header: 'NombreFigura', editor: 'text', fillspace: 1},
//~ {id: 'NumRegIdTribFigura', header: 'NumRegIdTribFigura', editor: 'text', fillspace: 1},
//~ {id: 'ResidenciaFiscalFigura', header: 'ResidenciaFiscalFigura', editor: 'text', fillspace: 1},
- {id: 'Municipio', header: 'Municipio', editor: 'text', fillspace: 1},
- {id: 'Estado', header: 'Estado', editor: 'select', options: opt_ccp_carta_estados, fillspace: 1},
- {id: 'Pais', header: 'País', editor: 'select', options: opt_ccp_countries, fillspace: 1},
- {id: 'CodigoPostal', header: 'C.P.', editor: 'text', fillspace: 1},
+ //~ {id: 'Municipio', header: 'Municipio', editor: 'text', fillspace: 1},
+ //~ {id: 'Estado', header: 'Estado', editor: 'select', options: opt_ccp_carta_estados, fillspace: 1},
+ //~ {id: 'Pais', header: 'País', editor: 'select', options: opt_ccp_countries, fillspace: 1},
+ //~ {id: 'CodigoPostal', header: 'C.P.', editor: 'text', fillspace: 1},
]
@@ -1220,7 +1221,6 @@ var grid_ccp_remolques = {
headermenu: true,
editable: true,
columns: grid_cols_ccp_remolques,
- data: [{id: 0}, {id: 1}],
}
var grid_ccp_seguros = {
view: 'datatable',
@@ -1275,9 +1275,14 @@ var body_ccp_mercancias = {rows:[
var body_ccp_autotransporte = {rows:[
grid_ccp_autotransporte,
- {maxHeight: 10},
+ {minHeight: 10},
+ {cols: [
+ {view: 'button', id: 'cmd_ccp_agregar_remolque', label: 'Agregar Remolque', icon: 'plus',
+ type: 'iconButton', autowidth: true, align: 'center'},
+ {}]},
+ {minHeight: 10},
grid_ccp_remolques,
- {maxHeight: 10},
+ {minHeight: 10},
grid_ccp_seguros,
]}