Stamp Carta Porte v3

This commit is contained in:
El Mau 2024-04-01 14:09:57 -06:00
parent 13a3c106c6
commit 7f129b84b2
6 changed files with 279 additions and 127 deletions

View File

@ -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')

View File

@ -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

View File

@ -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

View File

@ -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:<BR>Comercio Exterior<BR><BR>'
}
usar_carta_porte = $$('chk_cfdi_usar_cartaporte').getValue()
if(usar_carta_porte){
msg += 'Estas usando el complemento:<BR>Carta Porte<BR><BR>'
}
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<BR><BR>'
}
@ -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)

View File

@ -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'},

View File

@ -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,
]}