Web Services Obtener Nuevos Servicios URL https://karbooking.com/service/get-new-trips Parámetros Debe enviar por POST las variables user: Usuario válido de Karbooking pass: Password de un usuario válido de Karbooking last_transaction: Número de la última transacción procesada, utilizado por Karbooking para enviar sólo novedades. La primera vez que se llama el servicio, puede ser 01) Ejemplo para consumirlo <html><body><form action="https://karbooking.com/service/get-new-trips" method="POST"> User: <input type="text" class="form-control" name="user" value=""><br> Pass: <input type="text" class="form-control" name="pass" value=""><br> Transaction: <input type="text" class="form-control" name="last_transaction" value="1"><br> <input type="submit" value="Submit"> </form></body></html> Resultado El resultado es en formato JSON: { "success": true/false, "trips": [ // (array de viajes) { (campos de viaje), "cliente": { (campos de cliente) }, "desde_intermediate": [ { (campos de paradas intermedias ida) }, … ], "hasta_intermediate": [ { (campos de paradas intermedias en retorno) }, … ], "auth": { (campos autorizante) }, "pax1": { (campos pasajero) }, "pax2": { (campos pasajero) }, // puede ser null "pax3": { (campos pasajero) }, // puede ser null "pax4": { (campos pasajero) } // puede ser null }, … ], "transaction": nnn, // (número de transacción) "reason_code": n, // (código de error en caso de "success": false) "reason_desc": "xxxx" // (descripción del error en caso de "success": false) } Campos de viaje 'id', 'fecha_salida', 'hora_salida', 'fecha_pedido', 'hora_pedido', 'fecha_inicio', 'hora_inicio', 'fecha_fin', 'hora_fin', 'fecha_turno', 'tipo_servicio', 'destino_frecuente', 'desde_dir_id', 'desde_dir_nombre', 'desde_dir_calle', 'desde_dir_piso_depto', 'desde_dir_localidad', 'desde_dir_lat', 'desde_dir_lng', 'hasta_dir_id', 'hasta_dir_nombre', 'hasta_dir_calle', 'hasta_dir_piso_depto', 'hasta_dir_localidad', 'hasta_dir_lat', 'hasta_dir_lng', 'observaciones_ch', 'observaciones_cl', 'observaciones_op', 'km_presup', 'disposicion_solic', 'presupuesto_cl', 'presupuesto_ch', 'cuenta_corriente', 'tarjeta_credito', 'checks', 'status', 'factura', 'disposicion', 'oneway_distance_cl', 'oneway_distance_ch', 'return_distance_cl', 'return_distance_ch', 'kms', 'kms_0a', 'kms_b0', 'kms_cl', 'kms_ch', 'importe_kms_cl', 'importe_kms_ch', 'kms_ad', 'importe_kms_ad_cl', 'importe_kms_ad_ch', 'interm_dest', 'ajuste_cl', 'ajuste_ch', 'peajes', 'telepeajes', 'hoteleria', 'parking', 'carga', 'gastos', 'tiempo_espera', 'costo_espera_cl', 'costo_espera_ch', 'impuestos_cl', 'comprobante', 'fecha_cierre', 'hora_cierre', 'observaciones_cierre', 'closed_and_checked', 'razon_baja', 'fecha_baja', 'create_time', 'update_time', 'baja' Los campos de KMs que se deben utilizar en SGO son 'kms_cl' y 'kms_ch' que corresponden a la combinación de 'kms', 'kms_0a', 'kms_b0' según corresponda a la fórmula de cálculo de distancia El campo 'checks' puede tomar los siguientes valores: DISPOSITION: Si es con disposición RETURN: Si es con retorno MESSAGING: Si es mensajería INVOICE: Si solicita factura BILINGUAL: Si solicita conductor bilingüe ADD_MIN_TRIP: Agrega el costo de un viaje mínimo NO_GNC: Solicita que no sea GNC Estos son redundantes, ya que hay otros campos que indican lo mismo: FIX_CREDIT_CARD: Tarjeta de crédito FIX_IS_FREQ_DEST: Es destino frecuente (tarifa fija por barrio) FIX_HAS_INTERM_DEST: Tiene paradas intermedias Campos de Cliente 'id', 'nombre', 'cuit', 'email', 'email_viajes', 'observaciones', 'fecha_ingreso', 'cuenta_corriente', 'baja' Campos de Pasajero 'id', 'nombre', 'numero', 'email', 'tipo', 'telefono_alt', 'legajo', 'fecha_nacimiento', 'numero_documento', 'observaciones', 'observaciones_ch', 'observaciones_op', 'baja' Campos desde_intermediate y hasta_intermediate 'dir_calle', 'dir_localidad', 'dir_piso_depto', 'dir_nombre', 'dir_id', 'dir_lat', 'dir_lng', 'aeropuerto' // donde 'aeropuerto' puede ser null o un objeto con los siguientes campos: 'id_aeropuerto', 'id_aerolinea', 'flightno', 'id_procedencia', 'airsign', 'tipo' Campos de Factura 'fecha', 'desde', 'hasta', 'pto_vta', 'comprobante', 'cbte_tipo', 'val_tipo', 'val_numero', 'concepto', 'doc_tipo', 'imp_total', 'imp_neto_gastos', 'imp_neto_no_gravado', 'imp_neto_gravado', 'imp_neto_exento', 'imp_neto_terceros', 'imp_neto_agencia', 'imp_iva', 'imp_tributos', 'moneda_id', 'moneda_cotiz', 'informa_iva', 'condicion_pago', 'cae_num', 'cae_vto', 'vencimiento_pago', 'cli_razon_social', 'cli_documento', 'cli_direccion', 'cli_codigo_postal', 'cli_localidad', 'cli_telefono', 'cli_tipo_responsable', 'production' pto_vta: Campo PtoVta de AFIP: Punto de venta cbte_tipo: Campo CbteTipo de AFIP: Tipo de comprobante (ver tipos disponibles) concepto: Campo Concepto de AFIP: Concepto del Comprobante: (1)Productos, (2)Servicios, (3)Productos y Servicios doc_tipo: Campo DocTipo de AFIP: Tipo de documento del comprador (99 consumidor final, ver tipos disponibles) cli_documento: Campo DocNro de AFIP: Número de documento del comprador (0 consumidor final) comprobante: Campos CbteDesde y CbteHasta de AFIP: Número de comprobante val_tipo: Texto correspondiente al tipo de comprobante (por ejemplo “Factura A”) val_numero: Texto correspondiente a pto_vta y comprobante (por ejemplo “0005-00000023”) fecha: Campo CbteFch de AFIP: Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo desde: Campo FchServDesde de AFIP: Fecha de inicio del abono para el servicio a facturar hasta: Campo FchServHasta de AFIP: Fecha de fin del abono para el servicio a facturar vencimiento_pago: Campo FchVtoPago de AFIP: Fecha de vencimiento del pago servicio a facturar imp_total: Campo ImpTotal de AFIP: Importe total del comprobante imp_neto_no_gravado + imp_neto_gastos: Campo ImpTotConc de AFIP: Importe neto no gravado imp_neto_gravado: Campo ImpNeto de AFIP: Importe neto gravado imp_neto_exento: Campo ImpOpEx de AFIP: Importe exento de IVA imp_iva: Campo ImpIVA de AFIP: Importe total de IVA imp_tributos: Campo ImpTrib de AFIP: Importe total de tributos moneda_id: Campo MonId de AFIP: Tipo de moneda usada en el comprobante (ver tipos disponibles)('PES' para pesos argentinos) moneda_cotiz: Campo MonCotiz de AFIP: Cotización de la moneda usada (1 para pesos argentinos) informa_iva: 1 si informa IVA condicion_pago: Texto correspondiente a la condición de pago (por ejemplo “Cuenta Corriente”) cbu_number: Número de CBU (en facturas de crédito) cbu_alias: Alias de CBU (en facturas de crédito) cae_num: Número de CAE otorgado por AFIP cae_vto: Vencimiento de CAE otorgado por AFIP cli_razon_social: Razón Social del cliente cli_documento: Número de documento (CUIT/CUIL/DNI) cli_direccion: Dirección del cliente cli_codigo_postal: Código Postal del cliente cli_localidad: Localidad del cliente cli_telefono: Teléfono del cliente cli_tipo_responsable: Tipo de Responsable del cliente (por ejemplo “IVA Responsable Inscripto”) production: 1 si se trata de una factura de producción en AFIP (si no, no se debe tener en cuenta) Configuración El equipo de Karbooking puede configurar los siguientes parámetros que definen en qué momento se registran los servicios para estar disponibles en el webservice Servicios: Web Service - Registrar nuevos servicios Servicios: Web Service - Registrar servicios al pasar de “Cerrados a Revisar” a “Cerrados” Servicios: Web Service - Registrar servicios marcados con tilde “Revisado” Servicios: Web Service - Registrar servicios facturados Servicios: Web Service - Registrar servicios confirmados por el Conductor Ejemplo de resultado Ejemplo de resultado exitoso con la información de dos servicios {"success":true,"trips":[{"id":181965,"fecha_salida":"2018-12-21","hora_salida":"22:26:00","fecha_pedido":"2018-12-21","hora_pedido":"23:30:00","fecha_inicio":null,"hora_inicio":null,"fecha_fin":null,"hora_fin":null,"fecha_turno":"2018-12-21","tipo_servicio":"Tradicional","destino_frecuente":"Micro-Macro centro","desde_dir_id":"158655","desde_dir_nombre":"","desde_dir_calle":"Avenida Independencia 299","desde_dir_piso_depto":"","desde_dir_localidad":"Buenos Aires","desde_dir_lat":"-34.6170989","desde_dir_lng":"-58.3698155","hasta_dir_id":"158656","hasta_dir_nombre":"","hasta_dir_calle":"Suipacha 1036","hasta_dir_piso_depto":"","hasta_dir_localidad":"AAV","hasta_dir_lat":"-34.5957855","hasta_dir_lng":"-58.3799761","observaciones":"","observaciones_cl":"","km_presup":"4.00","disposicion_solic":null,"presupuesto_cl":"528.00","presupuesto_ch":"444.00","cuenta_corriente":1,"tarjeta_credito":0,"checks":"FIX_IS_FREQ_DEST,FIX_HAS_INTERM_DEST","status":"closed","factura":{"fecha":"2019-11-27","desde":"2019-10-17","hasta":"2019-11-27","pto_vta":7,"comprobante":3360,"cbte_tipo":11,"val_tipo":"Factura C","val_numero":"0007-00003360","concepto":2,"doc_tipo":80,"imp_total":"22252.00","imp_neto_gastos":"0.00","imp_neto_no_gravado":"22252.00","imp_neto_gravado":"0.00","imp_neto_exento":"0.00","imp_neto_terceros":"16935.31","imp_neto_agencia":"5316.69","imp_iva":"0.00","imp_tributos":"0.00","moneda_id":"PES","moneda_cotiz":"1.00","informa_iva":0,"condicion_pago":"Contado","cae_num":"69486000174954","cae_vto":"2019-12-07","vencimiento_pago":"2019-12-27","cli_razon_social":"Clarity S.A.","cli_documento":"30537667993","cli_direccion":"Avenida General San Martín 1100","cli_codigo_postal":"","cli_localidad":"La Tablada","cli_telefono":"40346755","cli_tipo_responsable":"IVA Responsable Inscripto","production":1},"disposicion":null,"kms":"4.00","kms_0a":"0.00","kms_b0":"7.00","importe_kms_cl":"888.00","importe_kms_ch":"444.00","kms_ad":null,"importe_kms_ad_cl":"0.00","importe_kms_ad_ch":"0.00","interm_dest":2,"ajuste_cl":null,"ajuste_ch":null,"peajes":null,"telepeajes":null,"hoteleria":null,"parking":null,"carga":null,"gastos":null,"tiempo_espera":null,"costo_espera_cl":"0.00","costo_espera_ch":"0.00","impuestos_cl":null,"comprobante":"","fecha_cierre":"2018-12-22","hora_cierre":"00:29:00","observaciones_cierre":"","closed_and_checked":1,"razon_baja":"","fecha_baja":null,"create_time":"2018-12-21 15:13:00","update_time":"2018-12-27 16:46:26","baja":0,"kms_cl":4,"kms_ch":11,"desde_intermediate":[{"dir_calle":"San Martín 1225/1275","dir_localidad":"Buenos Aires","dir_piso_depto":"","dir_nombre":"","dir_id":"153359","dir_lat":"-34.5930539","dir_lng":"-58.3724695","aeropuerto":null},{"dir_calle":"El Palomar","dir_localidad":"El Palomar","dir_piso_depto":"","dir_nombre":"","dir_id":"","dir_lat":"-34.6117266","dir_lng":"-58.6013705","aeropuerto":{"id_aeropuerto":"76","id_aerolinea":"","flightno":"","id_procedencia":"","airsign":"","tipo":"AIR"}}],"hasta_intermediate":[],"costcenter":"No Aplica - No Aplica","cliente":{"id":30386,"nombre":"Bass Grupo Creativo S.A.","cuit":"30-61234324-4","email":"reservas@bass.com.ar","email_viajes":"reservas@bass.com.ar","observaciones":"Nextel: 54*123*123","fecha_ingreso":"2018-10-10","cuenta_corriente":1,"baja":0},"auth":{"id":84154,"nombre":"JUAN PEREZ","numero":"","email":"","tipo":"PASSENGER_B","telefono_alt":"","legajo":"","fecha_nacimiento":null,"numero_documento":"","observaciones":"","baja":0},"pax1":{"id":84154,"nombre":"JUAN PEREZ","numero":"","email":"","tipo":"PASSENGER_B","telefono_alt":"","legajo":"","fecha_nacimiento":null,"numero_documento":"","observaciones":"","baja":0},"pax2":null,"pax3":null,"pax4":null},{"id":181971,"fecha_salida":"2018-12-21","hora_salida":"19:32:00","fecha_pedido":"2018-12-21","hora_pedido":"20:25:00","fecha_inicio":null,"hora_inicio":null,"fecha_fin":null,"hora_fin":null,"fecha_turno":"2018-12-21","tipo_servicio":"Tradicional","destino_frecuente":"Centro - Aeroparque","desde_dir_id":"","desde_dir_nombre":"","desde_dir_calle":"Aeroparque, Aerolineas Argentinas, vuelo: AR2831 CRD, desde/hacia: Comodoro Rivadavia, cartel: “PAX”","desde_dir_piso_depto":"","desde_dir_localidad":"CABA","desde_dir_lat":"-34.5553267","desde_dir_lng":"-58.4160861","hasta_dir_id":"152438","hasta_dir_nombre":"","hasta_dir_calle":"Avenida Callao 1234","hasta_dir_piso_depto":"","hasta_dir_localidad":"Buenos Aires","hasta_dir_lat":"-34.5892419","hasta_dir_lng":"-58.3896169","observaciones":" - 11 4123 4567\r\n - RECONFIRMARTRASLADO SABADO 22/12 15:00 - HOTEL/EZE","observaciones_cl":"","km_presup":"8.00","disposicion_solic":null,"presupuesto_cl":"550.00","presupuesto_ch":"480.00","cuenta_corriente":1,"tarjeta_credito":null,"checks":"FIX_IS_FREQ_DEST","status":"closed","factura":"","disposicion":null,"kms":null,"kms_0a":"0.00","kms_b0":"13.00","importe_kms_cl":"550.00","importe_kms_ch":"480.00","kms_ad":null,"importe_kms_ad_cl":"0.00","importe_kms_ad_ch":"0.00","interm_dest":0,"ajuste_cl":null,"ajuste_ch":null,"peajes":null,"telepeajes":null,"hoteleria":null,"parking":null,"carga":null,"gastos":null,"tiempo_espera":null,"costo_espera_cl":"0.00","costo_espera_ch":"0.00","impuestos_cl":null,"comprobante":"","fecha_cierre":"2018-12-22","hora_cierre":"00:33:00","observaciones_cierre":"","closed_and_checked":1,"razon_baja":"","fecha_baja":null,"create_time":"2018-12-21 15:56:47","update_time":"2018-12-27 12:54:21","baja":0,"kms_cl":0,"kms_ch":0,"desde_intermediate":[],"hasta_intermediate":[],"costcenter":"N/A - N/A","cliente":{"id":30096,"nombre":"Buhler S.A.","cuit":"30-70765401-1","email":"operaciones@agenciaejemplo.com.ar","email_viajes":"juan.lopez@buhler.com.ar","observaciones":"Alta 03.12.2015\r\n\r\nJUAN LOPEZ\r\nSupervisor de Compras\r\nCompras\r\nLogistica\r\n? 11 - 4132 - 9999 Ext. 7934 \r\nBuhler S.A.\r\nAfiliada a Hochschild Mining.\r\nwww.buhler.com.ar *MA","fecha_ingreso":"2018-08-20","cuenta_corriente":1,"baja":0},"auth":{"id":79047,"nombre":"GOROSITO Pipo","numero":"11 4123 4567","email":"roman.riquelme@buhler.com.ar","tipo":"PASSENGER_B","telefono_alt":"","legajo":"","fecha_nacimiento":null,"numero_documento":"","observaciones":"","baja":0},"pax1":{"id":79047,"nombre":"RIQUELME Roman Gilmer","numero":"11 4123 4567","email":"roman.riquelme@buhler.com.ar","tipo":"PASSENGER_B","telefono_alt":"","legajo":"","fecha_nacimiento":null,"numero_documento":"","observaciones":"","baja":0},"pax2":null,"pax3":null,"pax4":null}],"transaction":59} 1) La función de last_transaction es informarle al webservice cuál fue la última transacción procesada exitosamente. De esa manera, el webservice responderá sólo las novedades luego de esa transacción. Si siempre se le envía 0, además de las novedades, el webservice volverá a incluir también los datos ya enviados, por lo que la cantidad de datos respondidos en cada llamada va a ser incremental. Por lo tanto, es importante enviarle al webservice este valor