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