global->CFDIMX_HUSO_HORARIO; date_default_timezone_set($zona_horaria); try{ set_time_limit(150); }catch(Exception $e){ $msg_cfdi_final = "Error:".$e->getMessage(); } if( $modo_timbrado=="" ){ $modotimb=2; }else{ $modotimb = $modo_timbrado; } function validaRFC($valor) { $valor = str_replace("-", "", $valor); $cuartoValor = substr($valor, 3, 1); //RFC Persona Moral. if (ctype_digit($cuartoValor) && strlen($valor) == 12) { $letras = substr($valor, 0, 3); $numeros = substr($valor, 3, 6); $homoclave = substr($valor, 9, 3); $search = array("Ñ", "&");//caracteres admitidos por el SAT $replace = R;//se reemplaza en la busqueda para omitir el caracter $letras = str_replace($search, $replace, $letras); //reemplazar if (ctype_alpha($letras) && ctype_digit($numeros) && ctype_alnum($homoclave)) { return true; } //RFC Persona Fisica. } else if (ctype_alpha($cuartoValor) && strlen($valor) == 13) { $letras = substr($valor, 0, 4); $numeros = substr($valor, 4, 6); $homoclave = substr($valor, 10, 3); if (ctype_alpha($letras) && ctype_digit($numeros) && ctype_alnum($homoclave)) { return true; } }else { return false; } } function limpiar($String){ $String = str_replace(array('á','à','â','ã','ª','ä'),"a",$String); $String = str_replace(array('Á','À','Â','Ã','Ä'),"A",$String); $String = str_replace(array('Í','Ì','Î','Ï'),"I",$String); $String = str_replace(array('í','ì','î','ï'),"i",$String); $String = str_replace(array('é','è','ê','ë'),"e",$String); $String = str_replace(array('É','È','Ê','Ë'),"E",$String); $String = str_replace(array('ó','ò','ô','õ','ö','º'),"o",$String); $String = str_replace(array('Ó','Ò','Ô','Õ','Ö'),"O",$String); $String = str_replace(array('ú','ù','û','ü'),"u",$String); $String = str_replace(array('Ú','Ù','Û','Ü'),"U",$String); $String = str_replace(array('[','^','´','`','¨','~',']'),"",$String); $String = str_replace("ç","c",$String); $String = str_replace("Ç","C",$String); //$String = str_replace("ñ","n",$String); //$String = str_replace("Ñ","N",$String); $String = str_replace("Ý","Y",$String); $String = str_replace("ý","y",$String); $String = str_replace("á","a",$String); $String = str_replace("Á","A",$String); $String = str_replace("é","e",$String); $String = str_replace("É","E",$String); $String = str_replace("í","i",$String); $String = str_replace("Í","I",$String); $String = str_replace("ó","o",$String); $String = str_replace("Ó","O",$String); $String = str_replace("ú","u",$String); $String = str_replace("Ú","U",$String); return $String; } function getDataCliente( $db, $id ){ $sql = "SELECT * FROM ".MAIN_DB_PREFIX."societe WHERE rowid = " . $id; $resql=$db->query($sql); $obj = $db->fetch_object($resql); $data["rowid"] = $obj->rowid; $data["rfc"] = $obj->siren; $data["razon_social"] = utf8_decode($obj->nom); $data["colonia"] = utf8_decode($obj->town); //Covertir a del o mpio $data["estado"] = utf8_decode(getState($obj->fk_departement)); $data["cp"] = $obj->zip; $data["email"] = $obj->email; return $data; } function getU4DigCta( $id, $db ){ $sql = "SELECT * FROM ".MAIN_DB_PREFIX."societe_rib WHERE default_rib=1 AND fk_soc = " . $id; $resql = $db->query($sql); $cuenta = ""; if($resql){ $nmc = $db->fetch_object($resql); $total_char = strlen($nmc->number); if( $total_char>=4 ){ //$cuenta = substr($nmc->number,0,-4); $cuenta = $nmc->number; }else{ $cuenta = ""; } } return $cuenta; } function getFormaPago($id, $db){ $sql_formapago = "SELECT accountancy_code FROM ".MAIN_DB_PREFIX."c_paiement WHERE code = '" .$id."'"; $res_sql_formapago = $db->query($sql_formapago); $num_formapago = $db->num_rows($res_sql_formapago); $forma_pago = null; if($num_formapago > 0){ $obj_formapago = $db->fetch_object($res_sql_formapago); $forma_pago = $obj_formapago->accountancy_code; } return $forma_pago; } function getCondicionPago($code, $db ){ global $langs; $sql_condpago = "SELECT code, libelle AS label FROM ".MAIN_DB_PREFIX."c_payment_term WHERE code = '".$code."'"; $res_sql_condpago = $db->query($sql_condpago); $num_condpago = $db->num_rows($res_sql_condpago); $codicion_pago = null; if($num_condpago > 0){ $obj_condpago = $db->fetch_object($res_sql_condpago); $codicion_pago = ($langs->trans("PaymentConditionShort".$obj_condpago->code)!=("PaymentConditionShort".$obj_condpago->code)?$langs->trans("PaymentConditionShort".$obj_condpago->code):($obj_condpago->label!='-'?$obj_condpago->label:'')); } return $codicion_pago; } function mostrarDescuentos($entidad, $db){ $sql = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_descuentos"; $sql = " WHERE entity_id=".$entidad; $res_sql = $db->query($sql); $num_res_sql = $db->num_rows($res_sql); $mostrar_descuento=1; if($num_res_sql > 0){ $obj_descuento = $db->fetch_object($res_sql); if($obj_descuento->mostrar == 1){ $mostrar_descuento = 1; }else{ $mostrar_descuento = 2; } } return $mostrar_descuento; } function validarCCE($id, $db){ $sql_cce =" SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_facture_comercio_extranjero WHERE fk_facture=".$id; $res_sql_cce = $db->query($sql_cce); $num_sql_cce = $db->num_rows($res_sql_cce); $cce = ''; if($num_sql_cce > 0){ $cce='SI'; } return $cce; } function validarLotes($conf, $db, $facid){ $lote = "NO"; if(isset($conf->global->MAIN_MODULE_PRODUCTBATCH)){ $sql_lote = " SELECT ifnull(fk_source,null) as fk_source FROM ".MAIN_DB_PREFIX."element_element WHERE fk_target=".$facid." AND targettype='facture' AND sourcetype='commande'"; $res_sql_lote = $db->query($sql_lote); if($res_sql_lote){ $obj_sql_lote = $db->fetch_object($res_sql_lote); if($obj_sql_lote->fk_source != NULL && $obj_sql_lote->fk_source != null && $obj_sql_lote->fk_source > 0){ $sql_lote2 =" SELECT ifnull(fk_target,null) as fk_target FROM ".MAIN_DB_PREFIX."element_element WHERE fk_source=".$obj_sql_lote->fk_source." AND sourcetype='commande' AND targettype='shipping'"; $res_sql_lote2 = $db->query($sql_lote2); if($res_sql_lote2){ $obj_sql_lote2 = $db->fetch_object($res_sql_lote2); if($obj_sql_lote2->fk_target!=NULL && $obj_sql_lote2->fk_target!=null && $obj_sql_lote2->fk_target>0){ $lote = $obj_sql_lote2->fk_target; }else{ $lote = "NO"; } } }else{ $lote = "NO"; } } } return $lote; } //Funcion para obtener las retenciones del Producto function obtenerRetencionesProducto($id, $id_detalle, $impuesto, $vowels, $db){ $retenBase = null; $retenImporte = null; $retenTasa = null; $retenTipoFactor = null; $retencImpuesto = null; $sql_ret = " SELECT base,impuesto,tipo_factor,tasa,importe FROM ".MAIN_DB_PREFIX."cfdimx_retencionesdet WHERE factura_id=".$id." AND fk_facturedet=".$id_detalle." AND impuesto='".$impuesto."'"; $res_sql_ret = $db->query($sql_ret); $num_sql_ret = $db->num_rows($res_sql_ret); if($num_sql_ret > 0){ $obj_ret = $db->fetch_object($res_sql_ret); $retenBase = str_replace($vowels, "",number_format($obj_ret->base,2)); $retenImporte = str_replace($vowels, "",number_format($obj_ret->importe,2)); $retenTasa = $obj_ret->tasa; $retenTipoFactor = $obj_ret->tipo_factor; $retencImpuesto = $obj_ret->impuesto; } $retenciones = array( "retenBase" => $retenBase, "retenImporte" => $retenImporte, "retenTasa" => $retenTasa, "retenTipoFactor" => $retenTipoFactor, "retencImpuesto" => $retencImpuesto ); return $retenciones; } //Inicia Informacion de la Factura $descheader = 0; $auxsubtotal = 0; $factura = new Facture($db); $factura->fetch($facid); $cfdi_decimal = isset($conf->global->MAIN_INFO_CFDI_NUM_CFDI_DECIMAL) ? $conf->global->MAIN_INFO_CFDI_NUM_CFDI_DECIMAL : 2; $entidad = $conf->entity; $doli_version = (int)DOL_VERSION; $version_cfdi_sat = $conf->global->CFDIMX_VERSION_SAT; $errores_factura = null; $factura_tipo = $factura->type; if($factura_tipo == 2){ $tipoComprobante = "E"; }else{ $tipoComprobante = "I"; $sql = "SELECT * FROM " . MAIN_DB_PREFIX . "cfdimx_type_document WHERE fk_facture=" . $facid; $res_sql = $db->query($sql); if($res_sql){ $obj_tipoComprobante = $db->fetch_object($res_sql); if($obj_tipoComprobante->tipo_document == 7){ $tipoComprobante = "T"; } } } // print $tipoComprobante; die; // $facref = $obj->ref; $separafac = explode("-", $factura->ref); $serie = $separafac[0]; $folio = $separafac[1]; if($separafac[1] == '' || $separafac[1] == NULL || $separafac[1] == null){ $serie = ""; $folio = $separafac[0]; } #Inicia Ajuste para Facturas con mas de 1 serie if(count($separafac) > 2){ $serie = ""; for ($i=0; $i < count($separafac); $i++) { if($i == (count($separafac)-1)){ $folio = $separafac[$i]; }else{ if($i == 0){ $serie .= $separafac[$i]; }else{ $serie .= "-".$separafac[$i]; } } } } ##Termina Ajuste $cliente_id = $factura->socid; if($doli_version >= 14){ if($conf->global->MAIN_MODULE_MULTICURRENCY){ $factura_iva = str_replace(",", "", number_format($factura->multicurrency_total_tva,2)); }else{ $factura_iva = str_replace(",", "", number_format($factura->total_tva,2)); } }else{ if($conf->global->MAIN_MODULE_MULTICURRENCY){ $factura_iva = str_replace(",", "", number_format($factura->multicurrency_total_tva,2)); }else{ $factura_iva = str_replace(",", "", number_format($factura->tva,2)); } } if($doli_version >= 14){ if($conf->global->MAIN_MODULE_MULTICURRENCY){ $factura_subtotal = str_replace(",", "", number_format($factura->multicurrency_total_ht,2)); }else{ $factura_subtotal = str_replace(",", "", number_format($factura->total_ht,2)); } }else{ if($conf->global->MAIN_MODULE_MULTICURRENCY){ $factura_subtotal = str_replace(",", "", number_format($factura->multicurrency_total_ht,2)); }else{ $factura_subtotal = str_replace(",", "", number_format($factura->total,2)); if($factura_subtotal == 0){ $factura_subtotal = str_replace(",", "", number_format($factura->total_ht,2)); } } } if($conf->global->MAIN_MODULE_MULTICURRENCY){ $factura_total = str_replace(",", "", number_format($factura->multicurrency_total_ttc,2)); $factura_total_origen = str_replace(",", "", number_format($factura->multicurrency_total_ttc,2)); }else{ $factura_total = str_replace(",", "", number_format($factura->total_ttc,2)); $factura_total_origen = str_replace(",", "", number_format($factura->total_ttc,2)); } $factura_fecha = date("Y-m-d",$factura->date); $factura_formapago = getFormaPago($factura->mode_reglement_code, $db); $factura_condicionpago = getCondicionPago($factura->cond_reglement_code, $db); $factura_metodopago = $factura->array_options["options_formpagcfdi"]; $factura_usocfdi = $factura->array_options["options_usocfdi"]; // print '
'; print_r();

	// print 'factura_condicionpago :: '.$factura_condicionpago;

	//Termina Informacion de la Factura

	$entraconcepto='';//elminar

	$cuenta = getU4DigCta( $cliente_id, $db );
	$datareceptor_main = getDataCliente($db, $cliente_id );

	//Empieza Ajuste RIF
	$regimen_fiscal = $conf->global->CFDIMX_REGIMEN_FISCAL;
	$rfc_ajuste_rif = $datareceptor_main["rfc"];
	$ajustar_conceptos = 0;
	//Termina Ajuste RIF

	//Inicia Nueva obtencion de los conceptos
	// print '
PartidFac
'; print_r($factura); print '
'; if($factura->type == 2){ $vowels = array(",", "-"); }else{ $vowels = array(","); } $producto = new Product($db); $mostrar_descuentos = mostrarDescuentos($entidad, $db); $validar_cce = validarCCE($facid, $db); $validar_lotes = validarLotes($conf, $db, $facid); $errores_conceptos = null; $total_iva_exento = 0; for($i=0;$ilines);$i++) { //print '
PartidFac
'; print_r($factura->lines[$i]); print '
'; // die; // print '
Producto
'; print_r($producto); print '
'; $impuesto = '002'; $val_concepto = null; $informacionAduanera = array(); if ($factura->lines[$i]->fk_product != "") { $producto->fetch($factura->lines[$i]->fk_product); // print '
Producto
'; print_r($producto); print '
'; $lista_descripciones = null; if($conf->global->CFDIMX_DESC_PROD_CAT_REF == 1){ if($producto->ref != ""){ $lista_descripciones[] = $producto->ref; } } if($conf->global->CFDIMX_DESC_PROD_CAT_ETIQUETA == 1){ if($producto->label != ""){ $lista_descripciones[] = $producto->label; } } if($conf->global->CFDIMX_DESC_PROD_CAT_DESC == 1){ if($producto->description != ""){ $lista_descripciones[] = $producto->description; } } if($conf->global->CFDIMX_DESC_PROD_NO_CAT_DESC == 1){ if($factura->lines[$i]->desc != ""){ $lista_descripciones[] = $factura->lines[$i]->desc; } } ##Inicia Si el Producto Libre es Servicio se agrega las fechas a la descripcion if($factura->lines[$i]->product_type == 1){ $fecha_ini_servicio = dol_print_date($factura->lines[$i]->date_start, '%d-%m-%Y'); $fecha_fin_servicio = dol_print_date($factura->lines[$i]->date_end, '%d-%m-%Y'); $fecha_limit_servicio = ""; if($fecha_ini_servicio != "" && $fecha_fin_servicio != ""){ $fecha_limit_servicio = "(De ".$fecha_ini_servicio." a ".$fecha_fin_servicio.")"; }else{ if($fecha_ini_servicio != ""){ $fecha_limit_servicio = "(Desde ".$fecha_ini_servicio.")"; } if($fecha_fin_servicio != ""){ $fecha_limit_servicio = "(Hasta ".$fecha_fin_servicio.")"; } } if($fecha_limit_servicio != ""){ $lista_descripciones[] = $fecha_limit_servicio; } } ##Termina Si el Producto Libre es Servicio se agrega las fechas a la descripcion $descripcion = ""; if($lista_descripciones != null){ $descripcion = implode(" - ", $lista_descripciones); } if($validar_lotes != "NO" && $factura->lines[$i]->fk_product != ""){ $sql_lote_prod = " SELECT ifnull(fk_product,null) as fk_product, batch, eatby,(value * -1) as qty FROM ".MAIN_DB_PREFIX."stock_mouvement WHERE fk_product=".$factura->lines[$i]->fk_product." AND fk_origin=".$validar_lotes." AND origintype='shipping'"; $res_sql_lote_prod = $db->query($sql_lote_prod); while($obj_lote_prod = $db->fetch_object($res_sql_lote_prod)){ if($obj_lote_prod->fk_product!=NULL && (trim($obj_lote_prod->batch)!="" && $obj_lote_prod->batch!=NULL)){ $descripcion .= " - Cantidad: ".$obj_lote_prod->qty." Lote: ".$obj_lote_prod->batch." Cad: ".$obj_lote_prod->eatby; } } } if(strlen($descripcion) > 1000){ if(isset($conf->global->CFDIMX_LIM_DESC) && $conf->global->CFDIMX_LIM_DESC == 1){ $descripcion = substr($descripcion, 0, 1000); }else{ $val_concepto[] = "El producto '".$producto->ref."' supera el límite(1,000) de caracteres permitidos por el SAT."; } } $unidad = $producto->array_options["options_umed"]; $claveprodserv = $producto->array_options["options_claveprodserv"]; $noIdentificacion = $producto->array_options["options_noidenticfdi"]; $cuentapredial = $producto->array_options["options_cuentapredial"]; $tipoFactor = $producto->array_options["options_exentoiva"]; $objimp = $producto->array_options["options_objimp"]; if($conf->global->CFDIMX_NUM_PEDIMENTO == 1){ if(trim($producto->array_options["options_numpedimento"]) != ""){ $informacionAduanera = array("numeroPedimento" => trim($producto->array_options["options_numpedimento"])); } if(trim($producto->customcode) != ""){ $informacionAduanera = array("numeroPedimento" => trim($producto->customcode)); } } //Inicia Ajuste para tomar lo que se capture fuera del catalogo if($factura->lines[$i]->array_options["options_umed"] != "" && $factura->lines[$i]->array_options["options_umed"] != 0){ $unidad = $factura->lines[$i]->array_options["options_umed"]; } if($factura->lines[$i]->array_options["options_claveprodserv"] != "" && $factura->lines[$i]->array_options["options_claveprodserv"] != 0){ $claveprodserv = $factura->lines[$i]->array_options["options_claveprodserv"]; } if($factura->lines[$i]->array_options["options_exentoiva"] != ""){ $tipoFactor = $factura->lines[$i]->array_options["options_exentoiva"]; } if($factura->lines[$i]->array_options["options_objimp"] != "" && $factura->lines[$i]->array_options["options_objimp"] != 0){ $objimp = $factura->lines[$i]->array_options["options_objimp"]; } //Termina Ajuste para tomar lo que se capture fuera del catalogo if($unidad == ""){ $val_concepto[] = "El producto (".$producto->id.") - '".$producto->ref."' no tiene seleccionada la Unidad de Medida."; }else{ if(is_numeric($unidad)){ $val_concepto[] = "El producto (".$producto->id.") - '".$producto->ref."' no tiene seleccionada la Unidad de Medida."; } } if($claveprodserv == "" || $claveprodserv == 0){ $val_concepto[] = "El producto (".$producto->id.") - '".$producto->ref."' no tiene seleccionada la Clave Producto/Servicio."; } if(strcmp($version_cfdi_sat, "4.0") == 0){ if($objimp == "" || $objimp == 0){ $val_concepto[] = "El producto (".$producto->id.") - '".$producto->ref."' no tiene seleccionado el Objeto de Impuesto."; } } $label_prod_cat = $producto->ref; }else{ $descripcion = $factura->lines[$i]->desc; $unidad = $factura->lines[$i]->array_options["options_umed"]; $claveprodserv = $factura->lines[$i]->array_options["options_claveprodserv"]; $noIdentificacion = $factura->lines[$i]->array_options["options_noidenticfdi"]; $cuentapredial = $factura->lines[$i]->array_options["options_cuentapredial"]; $tipoFactor = $factura->lines[$i]->array_options["options_exentoiva"]; $objimp = $factura->lines[$i]->array_options["options_objimp"]; if($conf->global->CFDIMX_NUM_PEDIMENTO == 1){ if(trim($factura->lines[$i]->array_options["options_numpedimento"]) != ""){ $informacionAduanera = array("numeroPedimento" => trim($factura->lines[$i]->array_options["options_numpedimento"])); } } ##Inicia Si el Producto Libre es Servicio se agrega las fechas a la descripcion if($factura->lines[$i]->product_type == 1){ $fecha_ini_servicio = dol_print_date($factura->lines[$i]->date_start, '%d-%m-%Y'); $fecha_fin_servicio = dol_print_date($factura->lines[$i]->date_end, '%d-%m-%Y'); $fecha_limit_servicio = ""; if($fecha_ini_servicio != "" && $fecha_fin_servicio != ""){ $fecha_limit_servicio = " (De ".$fecha_ini_servicio." a ".$fecha_fin_servicio.")"; }else{ if($fecha_ini_servicio != ""){ $fecha_limit_servicio = " (Desde ".$fecha_ini_servicio.")"; } if($fecha_fin_servicio != ""){ $fecha_limit_servicio = " (Hasta ".$fecha_fin_servicio.")"; } } if($fecha_limit_servicio != ""){ $descripcion .= $fecha_limit_servicio; } } ##Termina Si el Producto Libre es Servicio se agrega las fechas a la descripcion if($unidad == ""){ $val_concepto[] = "La línea de la Factura '".$factura->lines[$i]->desc."' no tiene seleccionada la Unidad de Medida."; }else{ if(is_numeric($unidad)){ $val_concepto[] = "La línea de la Factura '".$factura->lines[$i]->desc."' no tiene seleccionada la Unidad de Medida."; } } if($claveprodserv == "" || $claveprodserv == 0){ $val_concepto[] = "La línea de la Factura '".$factura->lines[$i]->desc."' no tiene seleccionada la Clave Producto/Servicio."; } if(strcmp($version_cfdi_sat, "4.0") == 0){ if($objimp == "" || $objimp == 0){ $val_concepto[] = "La línea de la Factura '".$factura->lines[$i]->desc."' no tiene seleccionado el Objeto de Impuesto."; }else{ if($objimp == "02"){ if($tipoFactor == 1){ // $val_concepto[] = "La línea de la Factura '".$factura->lines[$i]->desc."' tiene seleccionado el Objeto de Impuesto 02 pero tiene indicado que es Exento de I.V.A., cambiar a 01."; if($factura->lines[$i]->tva_tx != 0){ $val_concepto[] = "La línea de la Factura '".$factura->lines[$i]->desc."' tiene seleccionado ".number_format($factura->lines[$i]->tva_tx, 2)."% de I.V.A. pero esta indicado el campo Exento de I.V.A, cambiar la Tasa a 0 %."; } } } } } if(dol_strlen($descripcion, 'UTF-8') > 1000){ if(isset($conf->global->CFDIMX_LIM_DESC) && $conf->global->CFDIMX_LIM_DESC == 1){ $descripcion = substr($descripcion, 0, 1000); }else{ $val_concepto[] = "La línea de la Factura '".$descripcion."' supera el límite(1,000) de caracteres permitidos por el SAT."; } } $label_prod_cat = $factura->lines[$i]->desc; } $label_tipoFactor = ($tipoFactor == 1 ? 'Exento' : 'Tasa'); $descprodl = null; if($conf->global->MAIN_MODULE_MULTICURRENCY == 1 && $factura->multicurrency_code != "MXN") { $factura_subtotal_detalle = $factura->lines[$i]->multicurrency_total_ht; $importeImpuesto = $factura->lines[$i]->multicurrency_total_tva; if($factura->lines[$i]->remise_percent != 0 && $mostrar_descuentos == 1){ $descuento = $factura->lines[$i]->remise_percent/100; $descuento2 = ($factura->lines[$i]->multicurrency_subprice*$factura->lines[$i]->qty)*$descuento; $descuento2 = str_replace(array("-",","), "",number_format($descuento2,2)); $descprodl = str_replace(array("-",","), "",number_format($descuento2,2)); $descheader = $descheader+$descuento2; $total_vuni = number_format($factura->lines[$i]->multicurrency_subprice,$cfdi_decimal); $total_ttc = number_format($factura->lines[$i]->multicurrency_subprice*$factura->lines[$i]->qty,$cfdi_decimal); }else{ if($factura->lines[$i]->remise_percent!=0 && $mostrar_descuentos==2){ $descuento = $factura->lines[$i]->multicurrency_total_ht/$factura->lines[$i]->qty; $total_vuni = number_format($descuento,$cfdi_decimal); $total_ttc = number_format($factura->lines[$i]->multicurrency_total_ht,$cfdi_decimal); }else{ $total_vuni = number_format($factura->lines[$i]->multicurrency_subprice,$cfdi_decimal); $total_ttc = number_format($factura->lines[$i]->multicurrency_total_ht,$cfdi_decimal); } } }else{ $factura_subtotal_detalle = $factura->lines[$i]->total_ht; $importeImpuesto = $factura->lines[$i]->total_tva; if($factura->lines[$i]->remise_percent != 0 && $mostrar_descuentos == 1){ $descuento = $factura->lines[$i]->remise_percent/100; $descuento2 = ($factura->lines[$i]->subprice*$factura->lines[$i]->qty)*$descuento; $descuento2 = str_replace(array("-",","), "",number_format($descuento2,2)); $descprodl = str_replace(array("-",","), "",number_format($descuento2,2)); $descheader = $descheader+$descuento2; $total_vuni = number_format($factura->lines[$i]->subprice,$cfdi_decimal); $total_ttc = number_format($factura->lines[$i]->subprice*$factura->lines[$i]->qty,$cfdi_decimal); }else{ if($factura->lines[$i]->remise_percent!=0 && $mostrar_descuentos==2){ $descuento = $factura->lines[$i]->total_ht/$factura->lines[$i]->qty; $total_vuni = number_format($descuento,$cfdi_decimal); $total_ttc = number_format($factura->lines[$i]->total_ht,$cfdi_decimal); }else{ $total_vuni = number_format($factura->lines[$i]->subprice,$cfdi_decimal); $total_ttc = number_format($factura->lines[$i]->total_ht,$cfdi_decimal); } } } ///Inicia Ajuste Nota Credito if($total_vuni == 0) $total_vuni = number_format($factura->lines[$i]->subprice, $cfdi_decimal); if($total_ttc == 0) $total_ttc = number_format($factura->lines[$i]->total_ht, $cfdi_decimal); if($factura->lines[$i]->total_tva == 0) $factura->lines[$i]->total_tva = $factura->lines[$i]->total_tva; if($factura->lines[$i]->total_ht == 0) $factura->lines[$i]->total_ht = $factura->lines[$i]->total_ht; ///Termina Ajuste Nota Credito $retencion_iva = obtenerRetencionesProducto($facid, $factura->lines[$i]->id, '002', $vowels, $db); $retencion_isr = obtenerRetencionesProducto($facid, $factura->lines[$i]->id, '001', $vowels, $db); if($validar_cce == 'SI'){ $sql_cce_noid = " SELECT noidentificacion FROM ".MAIN_DB_PREFIX."cfdimx_facture_comercio_extranjero_mercancia a WHERE a.fk_facture=".$facid." AND a.fk_facturedet=".$factura->lines[$i]->id; $res_sql_cce_noid = $db->query($sql_cce_noid); $num_sql_cce_noid = $db->num_rows($res_sql_cce_noid); $noIdentificacion = 0; if($num_sql_cce_noid > 0){ $obj_cce_noid = $db->fetch_object($res_sql_cce_noid); $noIdentificacion = $obj_cce_noid->noidentificacion; } } $cantidad = $factura->lines[$i]->qty; #Inicia Limpia de caracteres no permitidos por el SAT $lista_caracteres = array("|"); $descripcion = str_replace($lista_caracteres, " ", $descripcion); #Termina Limpia de caracteres no permitidos por el SAT if($conf->global->CFDIMX_DESC_PDF == 0){ $descripcion_xml = utf8_decode(strip_tags(html_entity_decode($descripcion))); }else{ $descripcion_xml = utf8_decode(strip_tags(html_entity_decode(mb_strtoupper($descripcion)))); } if($tipoFactor == 1){ $total_iva_exento += $importeImpuesto; } // $noIdentificacion = $jj; // print 'TVA_X :: '.$factura->lines[$i]->tva_tx.'<> objimp :: '.$objimp.' <> tipofactor :: '.$label_tipoFactor.'
'; ##Nueva validacion para Objeto de Impuesto if(in_array((int)$objimp, array(1,3))){ if($factura->lines[$i]->tva_tx > 0){ // print 'TVA_X :: '.$factura->lines[$i]->tva_tx.'<> objimp :: '.$objimp.' <> tipofactor :: '.$label_tipoFactor.'
'; $val_concepto[] = "El producto '".$label_prod_cat."' tiene (".number_format($factura->lines[$i]->tva_tx, 2, ".", "")." %) de I.V.A, lo cual no esta permitido para el Objeto de Impuesto ".$objimp."."; } } ##Validacion para Exento de IVA if($tipoFactor == 1){ // if((int)$objimp != 2){ // $val_concepto[] = "El producto '".$label_prod_cat."' esta marcado como Exento pero el Objeto Impuesto no es 02."; // } if($factura->lines[$i]->tva_tx > 0){ // print 'TVA_X :: '.$factura->lines[$i]->tva_tx.'<> objimp :: '.$objimp.' <> tipofactor :: '.$label_tipoFactor.'
'; $val_concepto[] = "El producto '".$label_prod_cat."' tiene (".number_format($factura->lines[$i]->tva_tx, 2, ".", "")." %) de I.V.A, pero esta marcado como Exento y debe tener la tasa de 0 %."; } } if($val_concepto != null){ $errores_conceptos[] = $val_concepto; } if(strcmp($version_cfdi_sat, "4.0") == 0){ $conceptos[] = array( // "descripcion" => $descripcion, "descripcion" => $descripcion_xml, 'cantidad' =>str_replace($vowels, "",number_format($cantidad,2)), 'valorUnitario'=>str_replace($vowels, "", $total_vuni), 'importe'=>str_replace($vowels, "", $total_ttc), // 'importeImpuesto'=>str_replace($vowels, "",round(($factura->lines[$i]->total_tva),6)), 'importeImpuesto'=>str_replace($vowels, "",round(($importeImpuesto),6)), 'impuesto'=>$impuesto, 'tasa'=>number_format(($factura->lines[$i]->tva_tx/100),6), "unidad" => $unidad, 'noIdentificacion' => $noIdentificacion, // 'tipoFactor'=>"Tasa", 'tipoFactor' => $label_tipoFactor, 'claveProdServ' => $claveprodserv, // 'base'=>str_replace($vowels, "", number_format($factura->lines[$i]->total_ht,2)), 'base'=>str_replace($vowels, "", number_format($factura_subtotal_detalle,2)), 'retenBase'=>$retencion_iva["retenBase"], 'retenImporte'=>$retencion_iva["retenImporte"], 'retenTasa'=>number_format($retencion_iva["retenTasa"],6), 'retenTipoFactor'=>$retencion_iva["retenTipoFactor"], 'retencImpuesto'=>$retencion_iva["retencImpuesto"], 'retenBaseISR'=>$retencion_isr["retenBase"], 'retenImporteISR'=>$retencion_isr["retenImporte"], 'retenTasaISR'=>number_format($retencion_isr["retenTasa"],6), 'retenTipoFactorISR'=>$retencion_isr["retenTipoFactor"], 'retencImpuestoISR'=>$retencion_isr["retencImpuesto"], 'descuento'=>$descprodl, 'cuentaPredial'=>$cuentapredial, 'objetoImp'=>$objimp, 'informacionAduanera' => $informacionAduanera ); } if(strcmp($version_cfdi_sat, "3.3") == 0 || $version_cfdi_sat == ''){ $conceptos[] = array( // "descripcion" => $descripcion, "descripcion" => $descripcion_xml, 'cantidad' =>str_replace($vowels, "",number_format($cantidad,2)), 'valorUnitario'=>str_replace($vowels, "", $total_vuni), 'importe'=>str_replace($vowels, "", $total_ttc), // 'importeImpuesto'=>str_replace($vowels, "",round(($factura->lines[$i]->total_tva),6)), 'importeImpuesto'=>str_replace($vowels, "",round(($importeImpuesto),6)), 'impuesto'=>$impuesto, 'tasa'=>number_format(($factura->lines[$i]->tva_tx/100),6), "unidad" => $unidad, 'noIdentificacion' => $noIdentificacion, // 'tipoFactor'=>"Tasa", 'tipoFactor' => $label_tipoFactor, 'claveProdServ' => $claveprodserv, // 'base'=>str_replace($vowels, "", number_format($factura->lines[$i]->total_ht,2)), 'base'=>str_replace($vowels, "", number_format($factura_subtotal_detalle,2)), 'retenBase'=>$retencion_iva["retenBase"], 'retenImporte'=>$retencion_iva["retenImporte"], 'retenTasa'=>number_format($retencion_iva["retenTasa"],6), 'retenTipoFactor'=>$retencion_iva["retenTipoFactor"], 'retencImpuesto'=>$retencion_iva["retencImpuesto"], 'retenBaseISR'=>$retencion_isr["retenBase"], 'retenImporteISR'=>$retencion_isr["retenImporte"], 'retenTasaISR'=>number_format($retencion_isr["retenTasa"],6), 'retenTipoFactorISR'=>$retencion_isr["retenTipoFactor"], 'retencImpuestoISR'=>$retencion_isr["retencImpuesto"], 'descuento'=>$descprodl, 'cuentaPredial'=>$cuentapredial ); } $auxsubtotal+=str_replace($vowels, "",$total_ttc); } //Ajuste IVA Exento // if($total_iva_exento > 0){ // $factura_total = $factura_total - $total_iva_exento; // } // factura_total // print '
'; print_r($factura); print "
"; // print '
'; print_r($conceptos); print "
"; // print '
'; print_r($errores_conceptos); print "
"; //Termina Nueva obtencion de los conceptos // die; //Empieza Ajuste RIF Conceptos // print '<<<<<<<<<<<<>>>>>>>>>>>>>
'; if($ajustar_conceptos == 1){ $conceptos_rif = $conceptos; $conceptos_rif2 = $conceptos2; //nuevas variables de totales $rif_subtotal = 0; $rif_iva = 0; for ($i=0; $i < count($conceptos_rif); $i++) { $rif_subtotal += $conceptos_rif[$i]["importe"]; $rif_iva += $conceptos_rif[$i]["importeImpuesto"]; // print 'Importe:: '.$conceptos_rif[$i]["importe"].'
'; //importeImpuesto // print 'importeImpuesto:: '.$conceptos_rif[$i]["importeImpuesto"].'

'; //importeImpuesto // print '
'; print_r($conceptos_rif[$i]); print "
"; $descripcion = $conceptos_rif[$i]['descripcion']; $cantidad = $conceptos_rif[$i]['cantidad']; $valorUnitario = $conceptos_rif[$i]['valorUnitario']; $importe = $conceptos_rif[$i]['importe']; $importeImpuesto = $conceptos_rif[$i]['importeImpuesto']; $impuesto = $conceptos_rif[$i]['impuesto']; $tasa = $conceptos_rif[$i]['tasa']; $unidad = $conceptos_rif[$i]['unidad']; $tipoFactor = $conceptos_rif[$i]['tipoFactor']; $claveProdServ = $conceptos_rif[$i]['claveProdServ']; $base = $conceptos_rif[$i]['base']; $retenBase = $conceptos_rif[$i]['retenBase']; $retenImporte = $conceptos_rif[$i]['retenImporte']; $retenTasa = $conceptos_rif[$i]['retenTasa']; $retenTipoFactor = $conceptos_rif[$i]['retenTipoFactor']; $retencImpuesto = $conceptos_rif[$i]['retencImpuesto']; $retenBaseISR = $conceptos_rif[$i]['retenBaseISR']; $retenImporteISR = $conceptos_rif[$i]['retenImporteISR']; $retenTasaISR = $conceptos_rif[$i]['retenTasaISR']; $retenTipoFactorISR = $conceptos_rif[$i]['retenTipoFactorISR']; $retencImpuestoISR = $conceptos_rif[$i]['retencImpuestoISR']; $descuento = $conceptos_rif[$i]['descuento']; $cuentaPredial = $conceptos_rif[$i]['cuentaPredial']; } $total_rif = $rif_subtotal + $rif_iva; $importeImpuesto = 0; $impuesto = "000"; $tasa = 0; $conceptos = null; $conceptos_tmp[0] = array( 'descripcion' => $descripcion, 'cantidad' => $cantidad, 'valorUnitario'=>str_replace($vowels, "", $total_rif), 'importe'=>str_replace($vowels, "", $total_rif), 'importeImpuesto'=>str_replace($vowels, "",round(($importeImpuesto),6)), 'impuesto'=>$impuesto, 'tasa'=>number_format(($tasa/100),6), 'unidad'=>$unidad, 'tipoFactor'=>$tipoFactor, 'claveProdServ'=>$claveProdServ, 'base'=>str_replace($vowels, "", number_format($total_rif,2)), 'retenBase'=>$retenBase, 'retenImporte'=>$retenImporte, 'retenTasa'=>number_format($retenTasa,6), 'retenTipoFactor'=>$retenTipoFactor, 'retencImpuesto'=>$retencImpuesto, 'retenBaseISR'=>$retenBaseISR, 'retenImporteISR'=>$retenImporteISR, 'retenTasaISR'=>number_format($retenTasaISR,6), 'retenTipoFactorISR'=>$retenTipoFactorISR, 'retencImpuestoISR'=>$retencImpuestoISR, 'descuento'=>$descuento, 'cuentaPredial'=>$cuentaPredial ); $conceptos2 = null; $conceptos2_tmp[0] = array( 'descripcion' =>$descripcion, 'cantidad' => $cantidad, 'valorUnitario'=>str_replace($vowels, "", $total_rif), 'importe'=>str_replace($vowels, "", $total_rif), 'importeImpuesto'=>str_replace($vowels, "",round(($importeImpuesto),6)), 'impuesto'=>$impuesto, 'tasa'=>$tasa, 'unidad'=>$unidad, 'tipoFactor'=>$tipoFactor, 'claveProdServ'=>$claveProdServ, 'base'=>str_replace($vowels, "", $total_rif) ); $factura_subtotal = $total_rif; $factura_iva = 0; $conceptos = $conceptos_tmp; $conceptos2 = $conceptos2_tmp; } // print $observaciones; // print '
'; print_r($conceptos2); print "
"; // print '<<<<<<<<<<<<>>>>>>>>>>>>>
'; //Termina Ajuste RIF Conceptos //Datos complementarios del emisor $sql ="SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_emisor_datacomp WHERE emisor_rfc = '".$conf->global->MAIN_INFO_SIREN."' AND entity_id = " . $conf->entity; $resql=$db->query($sql); if ($resql){ $num_emisor_datacomp = $db->num_rows($resql); $i = 0; if ($num_emisor_datacomp){ while ($i < $num_emisor_datacomp){ $obj = $db->fetch_object($resql); if ($obj){ $sqn="SELECT tipo_operacion, clv_pedimento, no_exportador, incoterm, observaciones, num_identificacion FROM ".MAIN_DB_PREFIX."cfdimx_facture_comercio_extranjero WHERE fk_facture=".$facid; $rqn=$db->query($sqn); $numrn=$db->num_rows($rqn); if($numrn>0){ $emisor_delompio = $obj->cod_municipio; $col_emisor = $obj->cod_colonia; }else{ $emisor_delompio = utf8_decode($obj->emisor_delompio); // Convertir a Colonia $col_emisor = limpiar(html_entity_decode($obj->emisor_colonia)); } $emisor_calle = utf8_decode($obj->emisor_calle); $emisor_noint = utf8_decode($obj->emisor_noint); $emisor_noext = utf8_decode($obj->emisor_noext); } $i++; } } } $sql = ''; $sql = 'SELECT rowid, nom, address, zip, town, fk_departement, siren FROM '.MAIN_DB_PREFIX.'societe WHERE rowid='.$datareceptor_main["rowid"]; $res_sql = $db->query($sql); dol_syslog('ESTE QUERY DIR: ' . $sql); if ($res_sql) { $num_emisor_datacomp = $db->num_rows($res_sql); $i = 0; if ($num_emisor_datacomp) { while ($i < $num_emisor_datacomp) { $obj = $db->fetch_object($res_sql); if ($obj) { /*$receptor_delompio = $obj->receptor_delompio; $receptor_colonia = utf8_decode($obj->receptor_colonia); $receptor_calle = utf8_decode($obj->receptor_calle); $receptor_noint = utf8_decode($obj->receptor_noint); $receptor_noext = utf8_decode($obj->receptor_noext);*/ $dir_estado = getState($obj->fk_departement,2); //print $dir_estado; //print '
'; print_r($obj); print '
'; die; $receptor_cod_municipio = ''; $receptor_delompio = $obj->town; //Municipio $receptor_colonia = ''; $receptor_calle = $obj->address; $receptor_noint = ''; $receptor_noext = ''; } $i++; } } } ## Check List //retenciones $retenciones = null; $retenciones2 = null; $resql=$db->query("SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_retenciones WHERE fk_facture = ".$facid); if ($resql){ $tot_ret = $db->num_rows($resql); $i = 0; if ($tot_ret){ while ($i < $tot_ret){ $obj = $db->fetch_object($resql); if ($obj){ if($factura_tipo==2){ $vowels = array(",", "-"); }else{ $vowels = array(","); } $retenclave=""; if($obj->impuesto=="IVA"){ $retenclave="002"; }else{ if($obj->impuesto=="ISR"){ $retenclave="001"; }else{ $retenclave=$obj->impuesto; } } $retenciones[$i]= array( "impuesto"=>trim(preg_replace("/ +/"," ",$retenclave)), "importe"=>str_replace($vowels, "",number_format(($obj->importe),2)) ); $retenciones2[$i]= array( "impuesto"=>trim(preg_replace("/ +/"," ",$retenclave)), "importe"=>str_replace($vowels, "",number_format($obj->importe,2)) ); } $i++; } } } //Retenciones locales Parte 1 $sqm="SELECT COUNT(*) AS count FROM information_schema.tables WHERE table_schema = '".$db->database_name."' AND table_name = '".MAIN_DB_PREFIX."cfdimx_config_retenciones_locales'"; $rqm=$db->query($sqm); $rqsm=$db->fetch_object($rqm); $total_retlocal=0; if($rqsm>0){ $resqm=$db->query("SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_retenciones_locales WHERE fk_facture = " . $facid); if ($resqm){ $cfdi_m = $db->num_rows($resqm); $m = 0; if ($cfdi_m>0){ while ($m < $cfdi_m){ $obm = $db->fetch_object($resqm); $total_retlocal=str_replace(",", "", number_format(($total_retlocal+$obm->importe),2)); $m++; } } } } // print $total_retlocal; // die; //ISH if(1){ $impuestoslocales=array(); $impuestoish="NO"; $sql="SHOW COLUMNS FROM ".MAIN_DB_PREFIX."product_extrafields LIKE 'prodcfish'"; $resql=$db->query($sql); $existe_ish = $db->num_rows($resql); $totalish=0; $imporcen=''; if( $existe_ish > 0 ){ if($conf->global->MAIN_MODULE_MULTICURRENCY){ $sql="SELECT a.fk_product,a.multicurrency_total_ht as total_ht,b.prodcfish,((b.prodcfish/100)*a.multicurrency_total_ht) as impish,c.ref,c.label,b.prodcfish_label FROM ".MAIN_DB_PREFIX."facturedet a, (SELECT fk_object,prodcfish,prodcfish_label FROM ".MAIN_DB_PREFIX."product_extrafields WHERE prodcfish!=0 AND prodcfish IS NOT NULL) b, ".MAIN_DB_PREFIX."product c WHERE a.fk_facture=".$id." AND a.fk_product =b.fk_object AND a.fk_product=c.rowid ORDER BY a.rowid"; }else { $sql="SELECT a.fk_product,a.total_ht,b.prodcfish,((b.prodcfish/100)*a.total_ht) as impish,c.ref,c.label,b.prodcfish_label FROM ".MAIN_DB_PREFIX."facturedet a, (SELECT fk_object,prodcfish,prodcfish_label FROM ".MAIN_DB_PREFIX."product_extrafields WHERE prodcfish!=0 AND prodcfish IS NOT NULL) b, ".MAIN_DB_PREFIX."product c WHERE a.fk_facture=".$facid." AND a.fk_product =b.fk_object AND a.fk_product=c.rowid ORDER BY a.rowid"; } $ass=$db->query($sql); $asf=$db->num_rows($ass); if($asf>0){ while($asd=$db->fetch_object($ass)){ $totalish=$totalish+$asd->impish; $imporcen=$asd->prodcfish; $etiqueta_ish = $asd->prodcfish_label; } } } if($totalish>0){ $totalish=str_replace(",", "", number_format($totalish,2)); $impuestoish=$totalish; $factura_total=$factura_total+$totalish-$total_retlocal; $factura_total=str_replace(",", "", number_format($factura_total,2)); $sql="SELECT count(*) as exist FROM ".MAIN_DB_PREFIX."cfdimx_facturedet WHERE fk_facture=".$facid." AND impuesto='ISH'"; $ass=$db->query($sql); $asd=$db->fetch_object($ass); if($asd->exist==0) { $sql="INSERT INTO ".MAIN_DB_PREFIX."cfdimx_facturedet (fk_facture,impuesto,importe) VALUES ('".$id."','ISH','".$totalish."')"; $ass=$db->query($sql); $i=0; } } #ISH Para productos de campo libre // $impuestoslocales=array(); $impuestoish2="NO"; $sql="SHOW COLUMNS FROM ".MAIN_DB_PREFIX."facturedet_extrafields LIKE 'prodcfish'"; $resql=$db->query($sql); $existe_ish2 = $db->num_rows($resql); $totalish2=0; $imporcen2=''; if( $existe_ish2 > 0 ){ if ($conf->global->MAIN_MODULE_MULTICURRENCY) { $sql = " SELECT a.fk_product, a.multicurrency_total_ht AS total_ht, b.prodcfish, ( (b.prodcfish / 100) * a.multicurrency_total_ht ) AS impish, a.label, a.description, b.prodcfish_label FROM ".MAIN_DB_PREFIX."facturedet a, ( SELECT fk_object, prodcfish, prodcfish_label FROM ".MAIN_DB_PREFIX."facturedet_extrafields WHERE prodcfish != 0 AND prodcfish IS NOT NULL ) b WHERE a.fk_facture = ".$facid." AND a.rowid = b.fk_object ORDER BY a.rowid; "; }else { $sql = " SELECT a.fk_product, a.total_ht, b.prodcfish, ( (b.prodcfish / 100) * a.total_ht ) AS impish, a.label, a.description, b.prodcfish_label FROM ".MAIN_DB_PREFIX."facturedet a, ( SELECT fk_object, prodcfish, prodcfish_label FROM ".MAIN_DB_PREFIX."facturedet_extrafields WHERE prodcfish != 0 AND prodcfish IS NOT NULL ) b WHERE a.fk_facture = ".$facid." AND a.rowid = b.fk_object ORDER BY a.rowid "; } $ass=$db->query($sql); $asf=$db->num_rows($ass); if($asf>0){ while($asd=$db->fetch_object($ass)){ $totalish2=$totalish2+$asd->impish; $imporcen2=$asd->prodcfish; $etiqueta_ish2 = $asd->prodcfish_label; } } } $totalDeTraslados = $totalish + $totalish2; if($impuestoish!="NO"){ if($factura_tipo==2){ $vowels = array(",", "-"); }else{ $vowels = array(","); } $impuestoish=str_replace($vowels, "", number_format($impuestoish,2)); $totalish=str_replace($vowels, "", number_format($totalish,2)); $impuestoslocales[$i]= array( "totalDeRetenciones"=>$total_retlocal, // "totalDeTraslados"=>"".($totalish), "totalDeTraslados"=>"".$totalDeTraslados, "tasadeTraslado"=>"".$imporcen, // "impLocTrasladado"=>"ISH", "impLocTrasladado"=>$etiqueta_ish, "importe"=>"".($totalish)); } if($totalish2>0){ $totalish2=str_replace(",", "", number_format($totalish2,2)); $impuestoish2=$totalish2; $factura_total=$factura_total+$totalish2-$total_retlocal; $factura_total=str_replace(",", "", number_format($factura_total,2)); $sql="SELECT count(*) as exist FROM ".MAIN_DB_PREFIX."cfdimx_facturedet WHERE fk_facture=".$facid." AND impuesto='ISH'"; $ass=$db->query($sql); $asd=$db->fetch_object($ass); if($asd->exist==0) { $sql="INSERT INTO ".MAIN_DB_PREFIX."cfdimx_facturedet (fk_facture,impuesto,importe) VALUES ('".$id."','ISH','".$totalish2."')"; $ass=$db->query($sql); $i=1; } } if($impuestoish2!="NO"){ if($factura_tipo==2){ $vowels = array(",", "-"); }else{ $vowels = array(","); } $impuestoish2=str_replace($vowels, "", number_format($impuestoish2,2)); $totalish2=str_replace($vowels, "", number_format($totalish2,2)); $impuestoslocales[]= array( "totalDeRetenciones"=>$total_retlocal, // "totalDeTraslados"=>"".($totalish2), "totalDeTraslados"=>"".$totalDeTraslados, "tasadeTraslado"=>"".$imporcen2, // "impLocTrasladado"=>"ISH", "impLocTrasladado"=>$etiqueta_ish2, "importe"=>"".($totalish2)); } } //print $factura_total;exit(); //Retencion local parte 2 // print $total_retlocal.'
'; if($total_retlocal != 0){ $n=0; if($impuestoish!="NO" || $impuestoish2!="NO"){ $n=1; }else{ $factura_total=$factura_total-$total_retlocal; $factura_total=str_replace(",", "", number_format($factura_total,2)); } $sql = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_retenciones_locales WHERE fk_facture = " . $facid; $resqm=$db->query($sql); if ($resqm){ $cfdi_m = $db->num_rows($resqm); $m = 0; if ($cfdi_m>0){ while ($m < $cfdi_m){ $obm = $db->fetch_object($resqm); if($total_retlocal < 0){ $total_retlocal = abs($total_retlocal); $obm->importe = abs($obm->importe); } if($n==0){ $impuestoslocales[$n]= array( "totalDeRetenciones"=>$total_retlocal, "totalDeTraslados"=>'0.00', "tasadeRetencion"=>"".str_replace(',', '',number_format($obm->tasa,2)), "impLocRetenido"=>$obm->codigo, "importeRetenido"=>"".str_replace(',', '',number_format($obm->importe,2))); }else{ $impuestoslocales[$n]= array( "tasadeRetencion"=>"".str_replace(',', '',number_format($obm->tasa,2)), "impLocRetenido"=>$obm->codigo, "importeRetenido"=>"".str_replace(',', '',number_format($obm->importe,2))); } $n++; $m++; } } } } // print '
'; print_r($impuestoslocales); print '
'; // die; // AMM evaluar // se modifica para multidivisa // if($conf->global->MAIN_MODULE_MULTIDIVISA){ // $sql="SELECT divisa FROM ".MAIN_DB_PREFIX."multidivisa_facture WHERE fk_object=".$facid; // $ra=$db->query($sql); // $rb=$db->fetch_object($ra); // $moneda=$rb->divisa; // }else{ if($conf->global->MAIN_MODULE_MULTICURRENCY){ $sql="SELECT multicurrency_code AS divisa FROM ".MAIN_DB_PREFIX."facture WHERE rowid=".$facid; $ra=$db->query($sql); $rb=$db->fetch_object($ra); $moneda=$rb->divisa; }else{ $moneda = !empty($osd)?$osd:$conf->currency; } // } // $moneda = !empty($osd)?$osd:$conf->currency; //$fecha_emison = date("Y-m-d"); $hora_emision = date("H:i:s"); $fecha_emison=$factura_fecha; //$hora_emision=$factura_hora; // if( $factura_tipo==2 ){ // $tipoComprobante="E"; // //$tipoComprobante="egreso"; //Nota de credito // }else{ // $tipoComprobante="I"; // //$tipoComprobante="ingreso"; //factura // } //DATOS DEL EMISOR $rfc_emisor = $conf->global->MAIN_INFO_SIREN; // $razon_social_emisor = utf8_decode($conf->global->MAIN_INFO_SOCIETE_NOM); $razon_social_emisor = utf8_decode($conf->global->CFDIMX_RAZON_SOCIAL); //$regimen = utf8_decode(getFormeJuridiqueLabel($conf->global->MAIN_INFO_SOCIETE_FORME_JURIDIQUE)); $regimen = $conf->global->CFDIMX_REGIMEN_FISCAL; $separa_pais = explode(":",$conf->global->MAIN_INFO_SOCIETE_COUNTRY); $pais = utf8_decode($separa_pais[2]); //$estado_emisor = getState($conf->global->MAIN_INFO_SOCIETE_STATE); $separa_estado = explode(':', $conf->global->MAIN_INFO_SOCIETE_STATE); $estado_emisor = getState($separa_estado[0]); $estado_emisor = utf8_decode($estado_emisor); $cp = $conf->global->MAIN_INFO_SOCIETE_ZIP; //$col_emisor = $conf->global->MAIN_INFO_SOCIETE_TOWN; if( $estado_emisor!="" ){ $lugar_exp = $emisor_delompio." ".$estado_emisor; }else{ $lugar_exp = "No identificado"; } $lugar_exp = $cp; //DATOS DEL HEADER DEL COMPROBANTE $header=array(); $sqn="SELECT tipo_operacion, clv_pedimento, no_exportador, incoterm, observaciones, num_identificacion,tipocambio FROM ".MAIN_DB_PREFIX."cfdimx_facture_comercio_extranjero WHERE fk_facture=".$facid; $rqn=$db->query($sqn); $numrn=$db->num_rows($rqn); if($numrn>0){ $rrn=$db->fetch_object($sqn); $sqn="SELECT code_iso FROM ".MAIN_DB_PREFIX."c_country WHERE rowid=".$separa_pais[0]; $rqn=$db->query($sqn); $rsn=$db->fetch_object($rqn); $pais=$rsn->code_iso; $separa_estado = explode(':', $conf->global->MAIN_INFO_SOCIETE_STATE); //$sqn="SELECT code_departement FROM ".MAIN_DB_PREFIX."c_departements WHERE rowid=".$conf->global->MAIN_INFO_SOCIETE_STATE; $sqn="SELECT code_departement FROM ".MAIN_DB_PREFIX."c_departements WHERE rowid=".$separa_estado[0]; $rqn=$db->query($sqn); $rsn=$db->fetch_object($rqn); $estado_emisor=$rsn->code_departement; $header["tipoCambio"]=(str_replace(array(",", "-"), "",$rrn->tipocambio)); } $header["fecha"]=$fecha_emison."T".$hora_emision; if($factura_tipo==2){ $vowels = array(",", "-"); }else{ $vowels = array(","); } $header["subTotal"]=(str_replace($vowels, "", number_format($factura_subtotal,2))); // $header["subTotal"] = "2001.00"; // function truncateFloat($number, $digitos) // { // $raiz = 10; // $multiplicador = pow ($raiz,$digitos); // $resultado = ((int)($number * $multiplicador)) / $multiplicador; // return number_format($resultado, $digitos); // } $header["total"]=(str_replace($vowels, "", number_format($factura_total,2))); // $header["total"] = "2321.16"; if($descheader!=0){ $auxcp1=str_replace($vowels, "", number_format($descheader,2)); //$auxcp1=str_replace($vowels, "", truncateFloat($descheader,2)); //$auxcp2=str_replace($vowels, "", number_format($factura_subtotal,2)); //$sumcp3=$auxcp1+$auxcp2; $header["subTotal"]=(str_replace($vowels, "", number_format($auxsubtotal,2))); $header["descuento"]=(str_replace($vowels, "", number_format($auxcp1,2))); //$header["descuento"]=(str_replace($vowels, "", number_format($descheader,2))); $auxcpp1=str_replace($vowels, "", number_format($auxsubtotal,2)); $auxcpp2=str_replace($vowels, "", number_format($factura_iva,2)); $sumcpp3=$auxsubtotal-$auxcp1+$auxcpp2; // print $auxsubtotal."::Sub
"; // print $auxcp1."::descuento
"; // print $sumcpp3."::Sub
";exit(); $factura_total=$sumcpp3; $header["total"]=(str_replace($vowels, "", number_format($sumcpp3,2))); } $header["tipoDeComprobante"]=$tipoComprobante; $header["lugarExpedicion"]=limpiar($lugar_exp); // $header["lugarExpedicion"] = "21001"; if($factura_formapago==NULL || $factura_formapago==null || $factura_formapago==''){ // $factura_formapago='No identificado'; // $factura_formapago = null; // print 'llega'; $errores_factura[] = "El campo Forma de Pago no tiene asociada niguna clave SAT."; } if($factura_condicionpago==NULL || $factura_condicionpago==null || $factura_condicionpago==''){ // $factura_condicionpago='No identificado'; $factura_condicionpago = null; } // $header["formaDePago"]=$factura_formapago; // $header["metodoDePago"]=limpiar(html_entity_decode($factura_condicionpago)); $header["formaDePago"]=limpiar(html_entity_decode($factura_formapago)); if(is_null($factura_condicionpago)){ }else{ $header["condicionesDePago"]=limpiar(html_entity_decode($factura_condicionpago)); } $header["metodoDePago"]=$factura_metodopago; // $header["metodoDePago"]="PUES";//$factura_metodopago; xxxxx //$header["metodoDePago2"]=$factura_metodopago2; /* if($tipoComprobante=="egreso"){ $header["formaDePago"]=limpiar(html_entity_decode($factura_condicionpago)); $header["metodoDePago"]=$factura_formapago; } */ // print '
'; print_r($header); print '
'; // die; //COMPLEMENTARIOS HEADER $parametros=array(); if( $moneda!="" ){ $header["moneda"]=trim(preg_replace("/ +/"," ",$moneda)); } $sqlk = "SHOW COLUMNS FROM ".MAIN_DB_PREFIX."facture_extrafields LIKE 'tipodecambiocfdi'"; $resqlk=$db->query($sqlk); $existeTC = $db->num_rows($resqlk); $banExtratipo=0; if($existeTC > 0 ){ $sqlk="SELECT tipodecambiocfdi FROM ".MAIN_DB_PREFIX."facture_extrafields WHERE fk_object=".$id; $resqlk=$db->query($sqlk); $resk=$db->fetch_object($resqlk); if($resk->tipodecambiocfdi!=NULL && $resk->tipodecambiocfdi!=null && $resk->tipodecambiocfdi!=""){ $header["tipoCambio"]=$resk->tipodecambiocfdi; $banExtratipo=1; } } // if($conf->global->MAIN_MODULE_MULTIDIVISA && $banExtratipo==0){ // $sql="SELECT IFNULL(tipo_cambio,null) as tipo_cambio // FROM ".MAIN_DB_PREFIX."multidivisa // WHERE fk_document=".$id." AND type_document='facture' AND entity=".$conf->entity." ORDER BY rowid DESC LIMIT 1"; // $rt=$db->query($sql); // $rts=$db->fetch_object($rt); // if($rts->tipo_cambio!=NULL){ // $header["tipoCambio"]=$rts->tipo_cambio; // } // } if( $serie!="" ){ $header["serie"]=trim(preg_replace("/ +/"," ",$serie)); } if( $folio!="" ){ $header["folio"]=trim(preg_replace("/ +/"," ",$folio)); } if( $cuenta!="" ){ $header["numCtaPago"]=trim(preg_replace("/ +/"," ",$cuenta)); } if(strcmp($version_cfdi_sat, "4.0") == 0){ $header["version"] = "4.0"; $header["exportacion"] = $factura->array_options["options_clave_expor"]; if(!in_array($header["exportacion"] , array("01", "02", "03", "04"))){ $errores_factura[] = "El campo Exportación no contiene un valor establecido por el SAT."; } } //ADICIONALES $adicionales=array(); $adicionales["servicio_id"]="2"; ##Inicia Ajustes Factura Global $sql = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_type_document WHERE fk_facture = ".$facid; $res_sql = $db->query($sql); if($res_sql){ $obj_info_c = $db->fetch_object($res_sql); if($obj_info_c->tipo_document == 8){ $sql_info_global = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_factura_global"; $sql_info_global .= " WHERE"; $sql_info_global .= " entity = ".$conf->entity; $sql_info_global .= " AND facid = ".$facid; $res_info_global = $db->query($sql_info_global); $num_info_global = $db->num_rows($res_info_global); if($num_info_global > 0){ $obj_info_global = $db->fetch_object($res_info_global); $datos_infoglobal[0] = array( "anio" => $obj_info_global->anio, "meses" => $obj_info_global->meses, "periodicidad" => $obj_info_global->periodicidad ); $adicionales["informacionGlobal"] = $datos_infoglobal; } } } /*$datos_infoglobal[0] = array( "anio" => 2022, "meses" => "012", "periodicidad" => "01" ); $adicionales["informacionGlobal"] = $datos_infoglobal; print '
'; print_r($adicionales); print '
';*/ ##Termina Ajustes Factura Global ##Nueva Validacion CFDI Rel $tipo_relacion = $factura->array_options["options_cfdidoctiporelacion"]; if(!is_null($tipo_relacion)){ if((int)$tipo_relacion > 0){ $sql_cfdi_relacionados = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_cfdi_relacionados WHERE fk_facture = " .$facid; $res_cfdi_relacionados = $db->query($sql_cfdi_relacionados); $num_cfdi_relacionados = $db->num_rows($res_cfdi_relacionados); if($num_cfdi_relacionados > 0){ $contador = 0; while($obj_cfdi_relacionado = $db->fetch_object($res_cfdi_relacionados)){ $docrelacionado[$contador] = array( "tipoRelacion" => $tipo_relacion, "uuidRelacionado" => $obj_cfdi_relacionado->uuid ); $contador++; } $adicionales["relacionado"] = $docrelacionado; }else{ $errores_factura[] = "Error 7000: La factura tiene una Clave (".$tipo_relacion.") para CFDI Relacionados, pero no tiene ningun UUID Relacionado."; } } } ## ##Inicia Validaciones Factura if($factura_metodopago == ""){ $errores_factura[] = "El campo Método de Pago esta vacío y es obligatorio."; } if($factura_usocfdi == ""){ $errores_factura[] = "El campo Uso CFDI esta vacío y es obligatorio."; } if($regimen <= 0){ $errores_factura[] = "El campo Regimen Fiscal del Emisor contiene un valor que no esta el catálogo proporcionado por el SAT."; } ##Termina Validaciones Factura if($retenciones != "" && $retenciones != null){ $adicionales["retenciones"]=$retenciones; $adicionales2["retenciones"]=$retenciones2; // realizamos la resta de las retenciones en este caso se aplicara directamente al total $index = count($adicionales ["retenciones"]); $suma_retenciones = 0; for ($ir = 0; $ir < $index; $ir++) { $suma_retenciones = $suma_retenciones + $adicionales2 ["retenciones"][$ir]["importe"]; } // $sql="UPDATE ".MAIN_DB_PREFIX."facture SET total_ttc=total_ttc-".$suma_retenciones." WHERE rowid=".$id; // $ass=$db->query($sql); // $factura_total = ($factura_total - $suma_retenciones); if($factura_total < 0){ $factura_total = ($factura_total + $suma_retenciones); }else{ $factura_total = ($factura_total - $suma_retenciones); } if($factura_tipo==2){ $vowels = array(",", "-"); }else{ $vowels = array(","); } $header["total"]=(str_replace($vowels, "", number_format($factura_total,2))); } if($impuestoish!="NO" || $impuestoish2!="NO" || $total_retlocal>0 ){ $adicionales["ilocales"]=$impuestoslocales; //dol_syslog("ADICIONALES ILOCALES::".$adicionales["ilocales"]); } // $sqn="SELECT tipo_operacion, clv_pedimento, no_exportador, incoterm, observaciones, num_identificacion // ,tipocambio,certificadoorigen,subdivision,totalusd // FROM ".MAIN_DB_PREFIX."cfdimx_facture_comercio_extranjero // WHERE fk_facture=".$facid; $sqn = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_facture_comercio_extranjero WHERE fk_facture = ".$facid; $rqn=$db->query($sqn); $numrn=$db->num_rows($rqn); if($numrn>0){ $rsqn=$db->fetch_object($rqn); if($rsqn->clv_pedimento=='' || $rsqn->clv_pedimento==null || $rsqn->clv_pedimento==NULL){ $rsqn->clv_pedimento=null; } if($rsqn->no_exportador=='' || $rsqn->no_exportador==null || $rsqn->no_exportador==NULL){ $rsqn->no_exportador=null; } if($rsqn->incoterm=='' || $rsqn->incoterm==null || $rsqn->incoterm==NULL){ $rsqn->incoterm=null; } if($rsqn->observaciones=='' || $rsqn->observaciones==null || $rsqn->observaciones==NULL){ $rsqn->observaciones=null; } if($rsqn->tipocambio=='' || $rsqn->tipocambio==null || $rsqn->tipocambio==NULL){ $rsqn->tipocambio=null; } if($rsqn->certificadoorigen=='' || $rsqn->certificadoorigen==null || $rsqn->certificadoorigen==NULL){ $rsqn->certificadoorigen=null; } if($rsqn->subdivision=='' || $rsqn->subdivision==null || $rsqn->subdivision==NULL){ $rsqn->subdivision=null; } if($rsqn->totalusd=='' || $rsqn->totalusd==null || $rsqn->totalusd==NULL){ $rsqn->totalusd=null; } if($rsqn->motivotraslado=='' || $rsqn->motivotraslado==null || $rsqn->motivotraslado==NULL){ $rsqn->motivotraslado=null; } if($rsqn->numcertificadoorigen=='' || $rsqn->numcertificadoorigen==null || $rsqn->numcertificadoorigen==NULL){ $rsqn->numcertificadoorigen=null; } $facex=new Facture($db); $facex->fetch($facid); $socex=new Societe($db); $socex->fetch($facex->socid); $sqlex="SELECT code_iso FROM ".MAIN_DB_PREFIX."c_country WHERE code='".$socex->country_code."'"; $rqex=$db->query($sqlex); $rslex=$db->fetch_object($rqex); $sqln2="SELECT preciousd,noidentificacion,fraccion_arancelaria,unidadcext,valor_unitario,cantidad_aduana,marca FROM ".MAIN_DB_PREFIX."cfdimx_facture_comercio_extranjero_mercancia a, ".MAIN_DB_PREFIX."facturedet b WHERE a.fk_facture=".$facid." AND a.fk_facture=b.fk_facture AND a.fk_facturedet=b.rowid"; $reqsn2=$db->query($sqln2); $numrn2=$db->num_rows($reqsn2); $cona=0; if($numrn2>0){ while($rsqn2=$db->fetch_object($reqsn2)){ if($rsqn2->preciousd!='' && $rsqn2->noidentificacion!=''){ if($rsqn2->unidadcext!=null && trim($rsqn2->unidadcext)!=""){$unidadcext=$rsqn2->unidadcext;}else{$unidadcext=null;} if($rsqn2->valor_unitario!=null && trim($rsqn2->valor_unitario)!=""){$valor_unitario=$rsqn2->valor_unitario;}else{$valor_unitario=null;} if($rsqn2->cantidad_aduana!=null && trim($rsqn2->cantidad_aduana)!=""){$cantidad_aduana=$rsqn2->cantidad_aduana;}else{$cantidad_aduana=null;} if($rsqn2->marca!=null && trim($rsqn2->marca)!=""){$marca=$rsqn2->marca;}else{$marca=null;} if($cona==0){ $comercio[$cona]=array( 'tipoOperacion'=>$rsqn->tipo_operacion, 'claveDePedimento'=>$rsqn->clv_pedimento, 'numeroExportadorConfiable'=>$rsqn->no_exportador, 'incoterm'=>$rsqn->incoterm, 'observaciones'=>$rsqn->observaciones, 'rNumRegIdTrib'=>$rsqn->num_identificacion, 'tipoCambio'=>$rsqn->tipocambio, 'certificadoOrigen'=>$rsqn->certificadoorigen, 'subdivision'=>$rsqn->subdivision, 'motivoTraslado'=>$rsqn->motivotraslado, 'numCertificadoOrigen'=>$rsqn->numcertificadoorigen, 'totalUSD'=>str_replace(array("-",","),"",number_format($rsqn->totalusd,2)), 'valorDolares'=>str_replace(array("-",","),"",number_format($rsqn2->preciousd,2)), 'noIdentificacion'=>$rsqn2->noidentificacion, 'residenciaFiscal'=>$rslex->code_iso, 'fraccionArancelaria'=>$rsqn2->fraccion_arancelaria, 'unidadAduana'=>$unidadcext, 'valorUnitarioAduana'=>str_replace(array("-",","),"",number_format($valor_unitario,2)), 'cantidadAduana'=>$cantidad_aduana, 'marca'=>$marca ); $cona++; }else{ $comercio[$cona]=array( 'valorDolares'=>str_replace(array("-",","),"",number_format($rsqn2->preciousd,2)), 'noIdentificacion'=>$rsqn2->noidentificacion, 'fraccionArancelaria'=>$rsqn2->fraccion_arancelaria, 'unidadAduana'=>$unidadcext, 'valorUnitarioAduana'=>str_replace(array("-",","),"",number_format($valor_unitario,2)), 'cantidadAduana'=>$cantidad_aduana, 'marca'=>$marca ); $cona++; } } } }else{ $comercio[0]=array( 'tipoOperacion'=>$rsqn->tipo_operacion, 'claveDePedimento'=>$rsqn->clv_pedimento, 'numeroExportadorConfiable'=>$rsqn->no_exportador, 'incoterm'=>$rsqn->incoterm, 'observaciones'=>$rsqn->observaciones, 'rNumRegIdTrib'=>$rsqn->num_identificacion, 'tipoCambio'=>$rsqn->tipocambio, 'certificadoOrigen'=>$rsqn->certificadoorigen, 'subdivision'=>$rsqn->subdivision, 'motivoTraslado'=>$rsqn->motivotraslado, 'numCertificadoOrigen'=>$rsqn->numcertificadoorigen, 'totalUSD'=>str_replace(array("-",","),"",number_format($rsqn->totalusd,2)) ); } if($cona==0){ $comercio[0]=array( 'tipoOperacion'=>$rsqn->tipo_operacion, 'claveDePedimento'=>$rsqn->clv_pedimento, 'numeroExportadorConfiable'=>$rsqn->no_exportador, 'incoterm'=>$rsqn->incoterm, 'observaciones'=>$rsqn->observaciones, 'rNumRegIdTrib'=>$rsqn->num_identificacion, 'tipoCambio'=>$rsqn->tipocambio, 'certificadoOrigen'=>$rsqn->certificadoorigen, 'subdivision'=>$rsqn->subdivision, 'motivoTraslado'=>$rsqn->motivotraslado, 'numCertificadoOrigen'=>$rsqn->numcertificadoorigen, 'totalUSD'=>str_replace(array("-",","),"",number_format($rsqn->totalusd,2))); } $adicionales["comercio"]=$comercio; //print_r($comercio);exit(); } // Inicia Comercio Exterior 2.0 $object_cce20 = new ComplementosCFDIMX($db, $facid); $valida_cce20 = $object_cce20->fac_cce20; // print 'valida_cce20::'.$valida_cce20.'::
'; if($valida_cce20 == 1){ $object_cce20->fetchHeadCCE20($facid); if($object_cce20->info_cce20["rowid"] > 0){ $comercioExterior = array(); if(!is_null($object_cce20->info_cce20["certificadoorigen"]) && trim($object_cce20->info_cce20["certificadoorigen"]) != ""){ $comercioExterior["certificadoOrigen"] = $object_cce20->info_cce20["certificadoorigen"]; } if(!is_null($object_cce20->info_cce20["clavedepedimento"]) && trim($object_cce20->info_cce20["clavedepedimento"]) != "" && $object_cce20->info_cce20["clavedepedimento"] != -1){ $comercioExterior["claveDePedimento"] = $object_cce20->info_cce20["clavedepedimento"]; } if(!is_null($object_cce20->info_cce20["incoterm"]) && trim($object_cce20->info_cce20["incoterm"]) != "" && $object_cce20->info_cce20["incoterm"] != -1){ $comercioExterior["incoterm"] = $object_cce20->info_cce20["incoterm"]; } if(!is_null($object_cce20->info_cce20["motivotraslado"]) && trim($object_cce20->info_cce20["motivotraslado"]) != "" && $object_cce20->info_cce20["motivotraslado"] != -1){ $comercioExterior["motivoTraslado"] = $object_cce20->info_cce20["motivotraslado"]; } if(!is_null($object_cce20->info_cce20["numcertificadoirgen"]) && trim($object_cce20->info_cce20["numcertificadoirgen"]) != ""){ $comercioExterior["numCertificadoOrigen"] = $object_cce20->info_cce20["numcertificadoirgen"]; } if(!is_null($object_cce20->info_cce20["numeroexportadorconfiable"]) && trim($object_cce20->info_cce20["numeroexportadorconfiable"]) != ""){ $comercioExterior["numeroExportadorConfiable"] = $object_cce20->info_cce20["numeroexportadorconfiable"]; } if(!is_null($object_cce20->info_cce20["observaciones"]) && trim($object_cce20->info_cce20["observaciones"]) != ""){ $comercioExterior["observaciones"] = $object_cce20->info_cce20["observaciones"]; } if(!is_null($object_cce20->info_cce20["tipocambiousd"]) && trim($object_cce20->info_cce20["tipocambiousd"]) != ""){ $comercioExterior["tipoCambioUSD"] = $object_cce20->info_cce20["tipocambiousd"]; } if(!is_null($object_cce20->info_cce20["totalusd"]) && trim($object_cce20->info_cce20["totalusd"]) != ""){ $comercioExterior["totalUSD"] = $object_cce20->info_cce20["totalusd"]; } if(!is_null($object_cce20->info_cce20["version"]) && trim($object_cce20->info_cce20["version"]) != ""){ $comercioExterior["version"] = $object_cce20->info_cce20["version"]; } // Datos Emisor $emisor_cce = array(); $emisor_cce_domilio = array(); $sql_emisor = 'SELECT * FROM '.MAIN_DB_PREFIX.'cfdimx_emisor_datacomp WHERE emisor_rfc="'. $conf->global->MAIN_INFO_SIREN.'" AND entity_id = '.$conf->entity; $res_emisor = $db->query($sql_emisor); $num_emisor = $db->num_rows($res_emisor); if($num_emisor > 0){ $obj_emisor = $db->fetch_object($res_emisor); // print '
'; print_r($obj_emisor); print '
'; if(!is_null($obj_emisor->emisor_calle) && trim($obj_emisor->emisor_calle) != ""){ $emisor_cce_domilio["calle"] = trim($obj_emisor->emisor_calle); } if(!is_null($obj_emisor->emisor_noext) && trim($obj_emisor->emisor_noext) != ""){ $emisor_cce_domilio["numeroExterior"] = trim($obj_emisor->emisor_noext); } if(!is_null($obj_emisor->emisor_noint) && trim($obj_emisor->emisor_noint) != ""){ $emisor_cce_domilio["numeroInterior"] = trim($obj_emisor->emisor_noint); } if(!is_null($obj_emisor->cod_colonia) && trim($obj_emisor->cod_colonia) != ""){ $emisor_cce_domilio["colonia"] = trim($obj_emisor->cod_colonia); } if(!is_null($obj_emisor->localidad) && trim($obj_emisor->localidad) != ""){ $emisor_cce_domilio["localidad"] = trim($obj_emisor->localidad); } if(!is_null($obj_emisor->referencia) && trim($obj_emisor->referencia) != ""){ $emisor_cce_domilio["referencia"] = trim($obj_emisor->referencia); } if(!is_null($obj_emisor->cod_municipio) && trim($obj_emisor->cod_municipio) != ""){ $emisor_cce_domilio["municipio"] = trim($obj_emisor->cod_municipio); } if(!is_null($obj_emisor->estado) && trim($obj_emisor->estado) != ""){ $separa_pais_cce = explode(":", $obj_emisor->pais); $separa_estado_cce = explode(":", $obj_emisor->estado); if(!is_null($separa_estado_cce[1]) && trim($separa_estado_cce[1]) != ""){ $emisor_cce_domilio["estado"] = trim($separa_estado_cce[1]); } if($separa_pais_cce[1] == "MX" && $separa_estado_cce[1] == "QRO"){ $emisor_cce_domilio["estado"] = "QUE"; } } if(!is_null($obj_emisor->pais) && trim($obj_emisor->pais) != ""){ $separa_pais_cce = explode(":", $obj_emisor->pais); if(!is_null($separa_pais_cce[2]) && trim($separa_pais_cce[2]) != ""){ $codigo_pais = ($separa_pais_cce[1] == "MX" ? "MEX" : $separa_pais_cce[1]); $emisor_cce_domilio["pais"] = trim($codigo_pais); } } if(!is_null($obj_emisor->codigo_postal) && trim($obj_emisor->codigo_postal) != ""){ $emisor_cce_domilio["codigoPostal"] = trim($obj_emisor->codigo_postal); } $emisor_cce["domicilio"] = $emisor_cce_domilio; $comercioExterior["emisor"] = $emisor_cce; } // Datos Propietario // Datos Receptor $obj_factura = new FacturaCFDI($db); $obj_factura->entidad = $conf->entity; $num_domicilio_fiscal = $obj_factura->getDomiciliosFiscalesCliente($datareceptor_main["rowid"], 1); if($num_domicilio_fiscal > 0){ $receptor_cce = array(); $receptor_cce_domicilio = array(); foreach ($obj_factura->lista_domicilios as $key => $value) { // print '
';
		    		// 	print_r($value);
		    		// print '
'; // Dato Head Receptor if($value->numregidtrib != "" && $value->numregidtrib != null){ $receptor_cce["numRegIdTrib"] = $value->numregidtrib; } // Datos Domicilio if(!is_null($value->calle) && trim($value->calle) != ""){ $receptor_cce_domicilio["calle"] = trim($value->calle); } if(!is_null($value->noext) && trim($value->noext) != ""){ $receptor_cce_domicilio["numeroExterior"] = trim($value->noext); } if(!is_null($value->noint) && trim($value->noint) != ""){ $receptor_cce_domicilio["numeroInterior"] = trim($value->noint); } if(!is_null($value->clave_col) && trim($value->clave_col) != ""){ $receptor_cce_domicilio["colonia"] = trim($value->clave_col); } if(!is_null($value->localidad) && trim($value->localidad) != ""){ $receptor_cce_domicilio["localidad"] = trim($value->localidad); } if(!is_null($value->referencia) && trim($value->referencia) != ""){ $receptor_cce_domicilio["referencia"] = trim($value->referencia); } if(!is_null($value->municipio) && trim($value->municipio) != ""){ $receptor_cce_domicilio["municipio"] = trim($value->municipio); } if(!is_null($value->estado) && trim($value->estado) != ""){ $receptor_cce_domicilio["estado"] = trim($value->estado); } if(!is_null($value->pais) && trim($value->pais) != ""){ $receptor_cce_domicilio["pais"] = trim($value->pais); } if(!is_null($value->cp) && trim($value->cp) != ""){ $receptor_cce_domicilio["codigoPostal"] = trim($value->cp); } } $receptor_cce["domicilio"] = $receptor_cce_domicilio; $comercioExterior["receptor"] = $receptor_cce; } // Datos Destinatario $mercancias_cce = array(); $num_mercancias = $object_cce20->fetchProductsCCE20($id); if($num_mercancias > 0){ $lista_mercancias = array(); foreach ($object_cce20->info_cce20["mercancias"] as $key => $value) { // print '
';
		    		// 	print_r($value);
		    		// print '
'; $mercancia = array(); if(!is_null($value["noidentificacion"]) && trim($value["noidentificacion"])){ $mercancia["noIdentificacion"] = trim($value["noidentificacion"]); } if(!is_null($value["fraccionarancelaria"]) && trim($value["fraccionarancelaria"]) && $value["fraccionarancelaria"] != -1){ $mercancia["fraccionArancelaria"] = trim($value["fraccionarancelaria"]); } if(!is_null($value["cantidadaduana"]) && trim($value["cantidadaduana"])){ $mercancia["cantidadAduana"] = trim($value["cantidadaduana"]); } if(!is_null($value["unidadaduana"]) && trim($value["unidadaduana"])){ $mercancia["unidadAduana"] = trim($value["unidadaduana"]); } if(!is_null($value["valorunitarioaduana"]) && trim($value["valorunitarioaduana"])){ $mercancia["valorUnitarioAduana"] = trim($value["valorunitarioaduana"]); } if(!is_null($value["valordolares"]) && trim($value["valordolares"])){ $mercancia["valorDolares"] = trim($value["valordolares"]); } // descripcionesEspecificas $sql = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_comercioexterior_mercanciadescripcionesespecificas"; $sql .= " WHERE"; $sql .= " fk_mercancia = ".$value["rowid"]; $resql = $db->query($sql); if($resql){ $i = 0; $num = $db->num_rows($resql); $mercancias_especificias = array(); while ($i < $num) { $obj_mercancia_es = $db->fetch_object($resql); $mercancia_especifica = array(); if(!is_null($obj_mercancia_es->marca) && trim($obj_mercancia_es->marca) != ""){ $mercancia_especifica["marca"] = $obj_mercancia_es->marca; } if(!is_null($obj_mercancia_es->modelo) && trim($obj_mercancia_es->modelo) != ""){ $mercancia_especifica["modelo"] = $obj_mercancia_es->modelo; } if(!is_null($obj_mercancia_es->numeroSerie) && trim($obj_mercancia_es->numeroSerie) != ""){ $mercancia_especifica["numeroSerie"] = $obj_mercancia_es->numeroSerie; } if(!is_null($obj_mercancia_es->subModelo) && trim($obj_mercancia_es->subModelo) != ""){ $mercancia_especifica["subModelo"] = $obj_mercancia_es->subModelo; } array_push($mercancias_especificias, $mercancia_especifica); $i++; } if(count($mercancias_especificias) > 0){ $mercancia["descripcionesEspecificas"] = $mercancias_especificias; } } array_push($lista_mercancias, $mercancia); } $mercancias_cce["mercancia"] = $lista_mercancias; $comercioExterior["mercancias"] = $mercancias_cce; } $adicionales["comercioExterior"] = $comercioExterior; // print '
';
			// 	print_r($adicionales["comercioExterior"]);
			// print '
'; } } //Inicia Carta Porte 3.0, 3.1 $object_cp = new ComplementosCFDIMX($db, $facid); // $valida_cp = $object_cp->fac_cp30; if($object_cp->fac_cp30 == 1 || $object_cp->fac_cp31 == 1){ $object_cp->fetchHeadCP($facid); if($object_cp->info_cp["rowid"] > 0){ $cartaPorte = array(); if(!is_null($object_cp->info_cp["version"]) && $object_cp->info_cp["version"] != ""){ $cartaPorte["version"] = $object_cp->info_cp["version"]; } if(!is_null($object_cp->info_cp["idccp"]) && $object_cp->info_cp["idccp"] != ""){ $cartaPorte["idCCP"] = $object_cp->info_cp["idccp"]; } if(!is_null($object_cp->info_cp["entradasalidamerc"]) && $object_cp->info_cp["entradasalidamerc"] != "" && $object_cp->info_cp["entradasalidamerc"] != -1){ $cartaPorte["entradaSalidaMerc"] = $object_cp->info_cp["entradasalidamerc"]; } if(!is_null($object_cp->info_cp["paisorigendestino"]) && $object_cp->info_cp["paisorigendestino"] != "" && $object_cp->info_cp["paisorigendestino"] != -1){ $cartaPorte["paisOrigenDestino"] = $object_cp->info_cp["paisorigendestino"]; } if($object_cp->fac_cp30 == 1){ if(!is_null($object_cp->info_cp["regimenaduanero"]) && $object_cp->info_cp["regimenaduanero"] != "" && $object_cp->info_cp["regimenaduanero"] != -1){ $cartaPorte["regimenAduanero"] = $object_cp->info_cp["regimenaduanero"]; } } if(!is_null($object_cp->info_cp["registroistmo"]) && $object_cp->info_cp["registroistmo"] != "" && $object_cp->info_cp["registroistmo"] != -1){ $cartaPorte["registroISTMO"] = $object_cp->info_cp["registroistmo"]; } if(!is_null($object_cp->info_cp["transpinternac"]) && $object_cp->info_cp["transpinternac"] != "" && $object_cp->info_cp["transpinternac"] != -1){ $cartaPorte["transpInternac"] = ($object_cp->info_cp["transpinternac"] == 1 ? utf8_decode("Sí") : "No"); } if(!is_null($object_cp->info_cp["viaentradasalida"]) && $object_cp->info_cp["viaentradasalida"] != "" && $object_cp->info_cp["viaentradasalida"] != -1){ $cartaPorte["viaEntradaSalida"] = $object_cp->info_cp["viaentradasalida"]; } if(!is_null($object_cp->info_cp["totaldistrec"]) && $object_cp->info_cp["totaldistrec"] != "" && $object_cp->info_cp["totaldistrec"] > 0){ $cartaPorte["totalDistRec"] = $object_cp->info_cp["totaldistrec"]; } if(!is_null($object_cp->info_cp["ubicacionpoloorigen"]) && $object_cp->info_cp["ubicacionpoloorigen"] != "" && $object_cp->info_cp["ubicacionpoloorigen"] != -1){ $cartaPorte["ubicacionPoloOrigen"] = $object_cp->info_cp["ubicacionpoloorigen"]; } if(!is_null($object_cp->info_cp["ubicacionpolodestino"]) && $object_cp->info_cp["ubicacionpolodestino"] != "" && $object_cp->info_cp["ubicacionpolodestino"] != -1){ $cartaPorte["ubicacionPoloDestino"] = $object_cp->info_cp["ubicacionpolodestino"]; } // Inicia Regimenes Aduaneros if($object_cp->fac_cp31 == 1){ // if($object_cp->info_cp["transpinternac"] == 1 && $object_cp->info_cp["entradasalidamerc"] != -1){ $object_cp->fetchRegimenesAduanerosCP($id); $num_regimenes = count($object_cp->info_cp["regimenes_aduaneros"]); if(is_array($object_cp->info_cp["regimenes_aduaneros"]) && $num_regimenes > 0){ $regimenesAduaneros_cp = array(); foreach ($object_cp->info_cp["regimenes_aduaneros"] as $key => $value) { $regimen_cp = array(); if(!is_null($value["regimenaduanero"]) && $value["regimenaduanero"] != "" && $value["regimenaduanero"] != -1){ $regimen_cp["regimenAduanero"] = $value["regimenaduanero"]; } array_push($regimenesAduaneros_cp, $regimen_cp); } $cartaPorte["regimenesAduaneros"]["regimenesAduanerosCCP"] = $regimenesAduaneros_cp; } } } // Inicia Ubicaciones $object_cp->fetchUbicacionesCP($facid); if(is_array($object_cp->info_cp["ubicaciones"]) && count($object_cp->info_cp["ubicaciones"]) > 0){ // ubicaciones $ubicaciones_cp = array(); foreach ($object_cp->info_cp["ubicaciones"] as $key => $value) { // print '
';
					// 	print_r($value);
					// print '
'; $ubicacion = array(); if(!is_null($value["tipoubicacion"]) && $value["tipoubicacion"] != "" && $value["tipoubicacion"] != -1){ $ubicacion["tipoUbicacion"] = $value["tipoubicacion"]; } if(!is_null($value["idubicacion"]) && $value["idubicacion"] != ""){ $ubicacion["IDUbicacion"] = $value["idubicacion"]; } if(!is_null($value["rfcremitentedestinatario"]) && $value["rfcremitentedestinatario"] != ""){ $ubicacion["RFCRemitenteDestinatario"] = $value["rfcremitentedestinatario"]; } if(!is_null($value["nombreremitentedestinatario"]) && $value["nombreremitentedestinatario"] != ""){ $ubicacion["nombreRemitenteDestinatario"] = $value["nombreremitentedestinatario"]; } if(!is_null($value["numregidtrib"]) && $value["numregidtrib"] != ""){ $ubicacion["numRegIdTrib"] = $value["numregidtrib"]; } if(!is_null($value["residenciafiscal"]) && $value["residenciafiscal"] != "" && $value["residenciafiscal"] != -1){ $ubicacion["residenciaFiscal"] = $value["residenciafiscal"]; } if(!is_null($value["numestacion"]) && $value["numestacion"] != "" && $value["numestacion"] != -1){ $ubicacion["numEstacion"] = $value["numestacion"]; } if(!is_null($value["nombreestacion"]) && $value["nombreestacion"] != ""){ $ubicacion["nombreEstacion"] = $value["nombreestacion"]; } if(!is_null($value["navegaciontrafico"]) && $value["navegaciontrafico"] != "" && $value["navegaciontrafico"] != -1){ $ubicacion["navegacionTrafico"] = $value["navegaciontrafico"]; } if(!is_null($value["fechasalidallegada"]) && $value["fechasalidallegada"] != "" && !is_null($value["horasalidallegada"]) && $value["horasalidallegada"] != ""){ $ubicacion["fechaHoraSalidaLlegada"] = $value["fechasalidallegada"]."T".$value["horasalidallegada"]; } if(!is_null($value["tipoestacion"]) && $value["tipoestacion"] != "" && $value["tipoestacion"] != -1){ $ubicacion["tipoEstacion"] = $value["tipoestacion"]; } if(!is_null($value["distanciarecorrida"]) && $value["distanciarecorrida"] != "" && $value["distanciarecorrida"] > 0){ $ubicacion["distanciaRecorrida"] = $value["distanciarecorrida"]; } $object_cp->fetchDomicilioUbicacionCP($value["rowid"]); if($object_cp->info_cp["domicilioubi"]["rowid_domicilio_ubi"] > 0){ $domicilio = array(); if(!is_null($object_cp->info_cp["domicilioubi"]["calle"]) && $object_cp->info_cp["domicilioubi"]["calle"] != ""){ $domicilio["calle"] = $object_cp->info_cp["domicilioubi"]["calle"]; } if(!is_null($object_cp->info_cp["domicilioubi"]["numeroexterior"]) && $object_cp->info_cp["domicilioubi"]["numeroexterior"] != ""){ $domicilio["numeroExterior"] = $object_cp->info_cp["domicilioubi"]["numeroexterior"]; } if(!is_null($object_cp->info_cp["domicilioubi"]["numerointerior"]) && $object_cp->info_cp["domicilioubi"]["numerointerior"] != ""){ $domicilio["numeroInterior"] = $object_cp->info_cp["domicilioubi"]["numerointerior"]; } if(!is_null($object_cp->info_cp["domicilioubi"]["colonia"]) && $object_cp->info_cp["domicilioubi"]["colonia"] != ""){ $domicilio["colonia"] = $object_cp->info_cp["domicilioubi"]["colonia"]; } if(!is_null($object_cp->info_cp["domicilioubi"]["localidad"]) && $object_cp->info_cp["domicilioubi"]["localidad"] != ""){ $domicilio["localidad"] = $object_cp->info_cp["domicilioubi"]["localidad"]; } if(!is_null($object_cp->info_cp["domicilioubi"]["referencia"]) && $object_cp->info_cp["domicilioubi"]["referencia"] != ""){ $domicilio["referencia"] = $object_cp->info_cp["domicilioubi"]["referencia"]; } if(!is_null($object_cp->info_cp["domicilioubi"]["municipio"]) && $object_cp->info_cp["domicilioubi"]["municipio"] != ""){ $domicilio["municipio"] = $object_cp->info_cp["domicilioubi"]["municipio"]; } if(!is_null($object_cp->info_cp["domicilioubi"]["estado"]) && $object_cp->info_cp["domicilioubi"]["estado"] != ""){ $domicilio["estado"] = $object_cp->info_cp["domicilioubi"]["estado"]; } if(!is_null($object_cp->info_cp["domicilioubi"]["pais"]) && $object_cp->info_cp["domicilioubi"]["pais"] != "" && $object_cp->info_cp["domicilioubi"]["pais"] != -1){ $domicilio["pais"] = $object_cp->info_cp["domicilioubi"]["pais"]; } if(!is_null($object_cp->info_cp["domicilioubi"]["codigopostal"]) && $object_cp->info_cp["domicilioubi"]["codigopostal"] != ""){ $domicilio["codigoPostal"] = $object_cp->info_cp["domicilioubi"]["codigopostal"]; } $ubicacion["domicilio"] = $domicilio; } array_push($ubicaciones_cp, $ubicacion); } $cartaPorte["ubicaciones"] = $ubicaciones_cp; } // Termina Ubicaciones // Inicia Mercancias $mercancias_cp = array(); $object_cp->fetchMercanciasCP($facid); if(!is_null($object_cp->info_cp["mercancias"]["pesobrutototal"]) && $object_cp->info_cp["mercancias"]["pesobrutototal"] != "" && $object_cp->info_cp["mercancias"]["pesobrutototal"] > 0){ $mercancias_cp["pesoBrutoTotal"] = $object_cp->info_cp["mercancias"]["pesobrutototal"]; } if(!is_null($object_cp->info_cp["mercancias"]["unidadpeso"]) && $object_cp->info_cp["mercancias"]["unidadpeso"] != "" && $object_cp->info_cp["mercancias"]["unidadpeso"] != -1){ $mercancias_cp["unidadPeso"] = $object_cp->info_cp["mercancias"]["unidadpeso"]; } if(!is_null($object_cp->info_cp["mercancias"]["pesonetototal"]) && $object_cp->info_cp["mercancias"]["pesonetototal"] != "" && $object_cp->info_cp["mercancias"]["pesonetototal"] > 0){ $mercancias_cp["pesoNetoTotal"] = $object_cp->info_cp["mercancias"]["pesonetototal"]; } if(!is_null($object_cp->info_cp["mercancias"]["numtotalmercancias"]) && $object_cp->info_cp["mercancias"]["numtotalmercancias"] != "" && $object_cp->info_cp["mercancias"]["numtotalmercancias"] > 0){ $mercancias_cp["numTotalMercancias"] = $object_cp->info_cp["mercancias"]["numtotalmercancias"]; } if(!is_null($object_cp->info_cp["mercancias"]["cargoportasacion"]) && $object_cp->info_cp["mercancias"]["cargoportasacion"] != "" && $object_cp->info_cp["mercancias"]["cargoportasacion"] > 0){ $mercancias_cp["cargoPorTasacion"] = $object_cp->info_cp["mercancias"]["cargoportasacion"]; } if(!is_null($object_cp->info_cp["mercancias"]["logisticainversarecolcciondevolucion"]) && $object_cp->info_cp["mercancias"]["logisticainversarecolcciondevolucion"] != "" && $object_cp->info_cp["mercancias"]["logisticainversarecolcciondevolucion"] != -1){ $mercancias_cp["logisticaInversaRecoleccionDevolucion"] = $object_cp->info_cp["mercancias"]["logisticainversarecolcciondevolucion"]; } $num_mercancias = $object_cp->fetchMercanciaListCP($facid); if($num_mercancias > 0){ $mercancia = array(); $pos = 0; foreach ($object_cp->info_cp["mercancia"]["mercancias"] as $key => $value) { // print '
';
					// 	print_r($value);
					// print '
'; if(!is_null($value["bienestransp"]) && $value["bienestransp"] != ""){ $mercancia[$pos]["bienesTransp"] = $value["bienestransp"]; } if(!is_null($value["clavestcc"]) && $value["clavestcc"] != ""){ $mercancia[$pos]["claveSTCC"] = $value["bienestransp"]; } if(!is_null($value["descripcion_origen"]) && $value["descripcion_origen"] != ""){ $mercancia[$pos]["descripcion"] = $value["descripcion_origen"]; } if(!is_null($value["cantidad"]) && $value["cantidad"] != "" && $value["cantidad"] > 0){ $mercancia[$pos]["cantidad"] = $value["cantidad"]; } if(!is_null($value["claveunidad"]) && $value["claveunidad"] != "" && $value["claveunidad"] != -1){ $mercancia[$pos]["claveUnidad"] = $value["claveunidad"]; } if(!is_null($value["unidad"]) && $value["unidad"] != ""){ $mercancia[$pos]["unidad"] = $value["unidad"]; } if(!is_null($value["dimensiones"]) && $value["dimensiones"] != ""){ $mercancia[$pos]["dimensiones"] = $value["dimensiones"]; } if(!is_null($value["materialpeligroso"]) && $value["materialpeligroso"] != "" && $value["materialpeligroso"] != -1){ $mercancia[$pos]["materialPeligroso"] = $value["materialpeligroso"]; } if(!is_null($value["cvematerialpeligroso"]) && $value["cvematerialpeligroso"] != "" && $value["cvematerialpeligroso"] != -1){ $mercancia[$pos]["cveMaterialPeligroso"] = $value["cvematerialpeligroso"]; } if(!is_null($value["embalaje"]) && $value["embalaje"] != "" && $value["embalaje"] != -1){ $mercancia[$pos]["embalaje"] = $value["embalaje"]; } if(!is_null($value["descripembalaje"]) && $value["descripembalaje"] != ""){ $mercancia[$pos]["descripEmbalaje"] = $value["descripembalaje"]; } if(!is_null($value["sectorcofepris"]) && $value["sectorcofepris"] != "" && $value["sectorcofepris"] != -1){ $mercancia[$pos]["sectorCOFEPRIS"] = $value["sectorcofepris"]; } if(!is_null($value["nombreingredienteactivo"]) && $value["nombreingredienteactivo"] != ""){ $mercancia[$pos]["nombreIngredienteActivo"] = $value["nombreingredienteactivo"]; } if(!is_null($value["nomquimico"]) && $value["nomquimico"] != ""){ $mercancia[$pos]["nomQuimico"] = $value["nomquimico"]; } if(!is_null($value["denominaciongenericaprod"]) && $value["denominaciongenericaprod"] != ""){ $mercancia[$pos]["denominacionGenericaProd"] = $value["denominaciongenericaprod"]; } if(!is_null($value["denominaciondistintivaprod"]) && $value["denominaciondistintivaprod"] != ""){ $mercancia[$pos]["denominacionDistintivaProd"] = $value["denominaciondistintivaprod"]; } if(!is_null($value["fabricante"]) && $value["fabricante"] != ""){ $mercancia[$pos]["fabricante"] = $value["fabricante"]; } if(!is_null($value["fechacaducidad"]) && $value["fechacaducidad"] != ""){ $mercancia[$pos]["fechaCaducidad"] = $value["fechacaducidad"]; } if(!is_null($value["lotemedicamento"]) && $value["lotemedicamento"] != ""){ $mercancia[$pos]["loteMedicamento"] = $value["lotemedicamento"]; } if(!is_null($value["formafarmaceutica"]) && $value["formafarmaceutica"] != "" && $value["formafarmaceutica"] != -1){ $mercancia[$pos]["formaFarmaceutica"] = $value["formafarmaceutica"]; } if(!is_null($value["condicionesesptransp"]) && $value["condicionesesptransp"] != "" && $value["condicionesesptransp"] != -1){ $mercancia[$pos]["condicionesEspTransp"] = $value["condicionesesptransp"]; } if(!is_null($value["registrosanitariofolioautorizacion"]) && $value["registrosanitariofolioautorizacion"] != "" && $value["registrosanitariofolioautorizacion"] != -1){ $mercancia[$pos]["registroSanitarioFolioAutorizacion"] = $value["registrosanitariofolioautorizacion"]; } if(!is_null($value["permisoimportacion"]) && $value["permisoimportacion"] != ""){ $mercancia[$pos]["permisoImportacion"] = $value["permisoimportacion"]; } if(!is_null($value["folioimpovucem"]) && $value["folioimpovucem"] != ""){ $mercancia[$pos]["folioImpoVUCEM"] = $value["folioimpovucem"]; } if(!is_null($value["numcas"]) && $value["numcas"] != ""){ $mercancia[$pos]["numCAS"] = $value["numcas"]; } if(!is_null($value["razonsocialempimp"]) && $value["razonsocialempimp"] != ""){ $mercancia[$pos]["razonSocialEmpImp"] = $value["razonsocialempimp"]; } if(!is_null($value["numregsanplagcofepris"]) && $value["numregsanplagcofepris"] != ""){ $mercancia[$pos]["numRegSanPlagCOFEPRIS"] = $value["numregsanplagcofepris"]; } if(!is_null($value["datosfabricante"]) && $value["datosfabricante"] != ""){ $mercancia[$pos]["datosFabricante"] = $value["datosfabricante"]; } if(!is_null($value["datosformulador"]) && $value["datosformulador"] != ""){ $mercancia[$pos]["datosFormulador"] = $value["datosformulador"]; } if(!is_null($value["datosmaquilador"]) && $value["datosmaquilador"] != ""){ $mercancia[$pos]["datosMaquilador"] = $value["datosmaquilador"]; } if(!is_null($value["usoautorizado"]) && $value["usoautorizado"] != ""){ $mercancia[$pos]["usoAutorizado"] = $value["usoautorizado"]; } if(!is_null($value["pesoenkg"]) && $value["pesoenkg"] != "" && $value["pesoenkg"] > 0){ $mercancia[$pos]["pesoEnKg"] = $value["pesoenkg"]; } if(!is_null($value["valormercancia"]) && $value["valormercancia"] != "" && $value["valormercancia"] > 0){ $mercancia[$pos]["valorMercancia"] = $value["valormercancia"]; } if(!is_null($value["moneda"]) && $value["moneda"] != "" && $value["moneda"] != -1){ $mercancia[$pos]["moneda"] = $value["moneda"]; } if(!is_null($value["fraccionarancelaria"]) && $value["fraccionarancelaria"] != "" && $value["fraccionarancelaria"] != -1){ $mercancia[$pos]["fraccionArancelaria"] = $value["fraccionarancelaria"]; } if(!is_null($value["uuidcomercioext"]) && $value["uuidcomercioext"] != ""){ $mercancia[$pos]["UUIDComercioExt"] = $value["uuidcomercioext"]; } if(!is_null($value["tipomateria"]) && $value["tipomateria"] != "" && $value["tipomateria"] != -1){ $mercancia[$pos]["tipoMateria"] = $value["tipomateria"]; } if(!is_null($value["descripcionmateria"]) && $value["descripcionmateria"] != ""){ $mercancia[$pos]["descripcionMateria"] = $value["descripcionmateria"]; } // Inicia Documentacion Aduanera if($value["num_documentacion_aduanera"] > 0){ $object_cp->fetchMercanciaDocumentacionAduaneraCP($value["rowid_mercancia"]); $info_doc_aduanera = array(); foreach ($object_cp->info_cp["mercancia"]["documentaciones_aduanera"] as $key => $value2) { // print '
';
                        	// 	print_r($value2);
                        	// print '
'; $doc_aduanera = array(); if(!is_null($value2["tipodocumento"]) && $value2["tipodocumento"] != "" && $value2["tipodocumento"] != -1){ $doc_aduanera["tipoDocumento"] = $value2["tipodocumento"]; } if(!is_null($value2["numpedimento"]) && $value2["numpedimento"] != ""){ $doc_aduanera["numPedimento"] = $value2["numpedimento"]; } if(!is_null($value2["identdocaduanero"]) && $value2["identdocaduanero"] != ""){ $doc_aduanera["identDocAduanero"] = $value2["identdocaduanero"]; } if(!is_null($value2["rfcimpo"]) && $value2["rfcimpo"] != ""){ $doc_aduanera["RFCImpo"] = $value2["rfcimpo"]; } array_push($info_doc_aduanera, $doc_aduanera); } $mercancia[$pos]["documentacionAduanera"] = $info_doc_aduanera; } // Termina Documentacion Aduanera // Inicia Guias Identificacion if($value["num_guias_identificacion"] > 0){ $object_cp->fetchMercanciaGuiasIdentificacion($value["rowid_mercancia"]); $info_guias_ident = array(); foreach ($object_cp->info_cp["mercancia"]["guiasidentificacion"] as $key => $value2) { // print '
';
                        	// 	print_r($value2);
                        	// print '
'; $guia_ident = array(); if(!is_null($value2["numeroguiaidentificacion"]) && $value2["numeroguiaidentificacion"] != ""){ $guia_ident["numeroGuiaIdentificacion"] = $value2["numeroguiaidentificacion"]; } if(!is_null($value2["descripguiaidentificacion"]) && $value2["descripguiaidentificacion"] != ""){ $guia_ident["descripGuiaIdentificacion"] = $value2["descripguiaidentificacion"]; } if(!is_null($value2["pesoguiaidentificacion"]) && $value2["pesoguiaidentificacion"] != "" && $value2["pesoguiaidentificacion"] > 0){ $guia_ident["pesoGuiaIdentificacion"] = $value2["pesoguiaidentificacion"]; } array_push($info_guias_ident, $guia_ident); } $mercancia[$pos]["guiasIdentificacion"] = $info_guias_ident; } // Termina Guias Identificacion // Inicia Cantidad Transporta if($value["num_cantidad_transporta"] > 0){ $object_cp->fetchMercanciaCantidadTransportaCP($value["rowid_mercancia"]); $info_cant_transporta = array(); foreach ($object_cp->info_cp["mercancia"]["cantidad_transporta"] as $key => $value2) { // print '
';
                        	// 	print_r($value2);
                        	// print '
'; $cant_transporta = array(); if(!is_null($value2["cantidad"]) && $value2["cantidad"] != "" && $value2["cantidad"] > 0){ $cant_transporta["cantidad"] = $value2["cantidad"]; } if(!is_null($value2["idorigen"]) && $value2["idorigen"] != ""){ $cant_transporta["IDOrigen"] = $value2["idorigen"]; } if(!is_null($value2["iddestino"]) && $value2["iddestino"] != ""){ $cant_transporta["IDDestino"] = $value2["iddestino"]; } if(!is_null($value2["cvestransporte"]) && $value2["cvestransporte"] != "" && $value2["cvestransporte"] != -1){ $cant_transporta["cvesTransporte"] = $value2["cvestransporte"]; } array_push($info_cant_transporta, $cant_transporta); } $mercancia[$pos]["cantidadTransporta"] = $info_cant_transporta; } // Termina Cantidad Transporta // Inicia Detalle Mercancia if($value["num_detalle_mercancia"] > 0){ $object_cp->fetchMercanciaDetalleMercanciaCP($value["rowid_mercancia"]); $info_detalle_mercancia = array(); // print '
';
                    	// 	print_r($object_cp->info_cp["mercancia"]);
                    	// print '
'; $det_mercancia = array(); if(!is_null($object_cp->info_cp["mercancia"]["unidadpesomerc"]) && $object_cp->info_cp["mercancia"]["unidadpesomerc"] != "" ){ $det_mercancia["unidadPesoMerc"] = $object_cp->info_cp["mercancia"]["unidadpesomerc"]; } if(!is_null($object_cp->info_cp["mercancia"]["pesobruto"]) && $object_cp->info_cp["mercancia"]["pesobruto"] != "" ){ $det_mercancia["pesoBruto"] = $object_cp->info_cp["mercancia"]["pesobruto"]; } if(!is_null($object_cp->info_cp["mercancia"]["pesoneto"]) && $object_cp->info_cp["mercancia"]["pesoneto"] != "" ){ $det_mercancia["pesoNeto"] = $object_cp->info_cp["mercancia"]["pesoneto"]; } if(!is_null($object_cp->info_cp["mercancia"]["pesotara"]) && $object_cp->info_cp["mercancia"]["pesotara"] != "" ){ $det_mercancia["pesoTara"] = $object_cp->info_cp["mercancia"]["pesotara"]; } if(!is_null($object_cp->info_cp["mercancia"]["numpiezas"]) && $object_cp->info_cp["mercancia"]["numpiezas"] != "" ){ $det_mercancia["numPiezas"] = $object_cp->info_cp["mercancia"]["numpiezas"]; } array_push($info_detalle_mercancia, $det_mercancia); $mercancia[$pos]["detalleMercancia"] = $info_detalle_mercancia; } // Termina Detalle Mercancia $pos++; } $mercancias_cp["mercancia"] = $mercancia; } $tipo_transporte = $object_cp->info_cp["viaentradasalida"]; // print 'tipo_transporte::'.$tipo_transporte.'::
'; if($tipo_transporte == "01"){ $autotransporte = $object_cp->fetchAutoTransporteCP($facid); $info_autotransporte = array(); if(!is_null($object_cp->info_cp["autotransporte"]["permsct"]) && $object_cp->info_cp["autotransporte"]["permsct"] != "" && $object_cp->info_cp["autotransporte"]["permsct"] != -1){ $info_autotransporte["permSCT"] = $object_cp->info_cp["autotransporte"]["permsct"]; } if(!is_null($object_cp->info_cp["autotransporte"]["numpermisosct"]) && $object_cp->info_cp["autotransporte"]["numpermisosct"] != ""){ $info_autotransporte["numPermisoSCT"] = $object_cp->info_cp["autotransporte"]["numpermisosct"]; } // Identificacion Vehicular $num_identifiacionvehicular = $object_cp->fetchAutoTransporteIdentificacionVehicularCP($object_cp->info_cp["autotransporte"]["rowid_autotransporte"]); if($num_identifiacionvehicular > 0){ $info_ident_vehicular = array(); $ident_vehicular = array(); if(!is_null($object_cp->info_cp["autotransporte"]["configvehicular"]) && $object_cp->info_cp["autotransporte"]["configvehicular"] != ""){ $ident_vehicular["configVehicular"] = $object_cp->info_cp["autotransporte"]["configvehicular"]; } if(!is_null($object_cp->info_cp["autotransporte"]["pesobrutovehicular"]) && $object_cp->info_cp["autotransporte"]["pesobrutovehicular"] != ""){ $ident_vehicular["pesoBrutoVehicular"] = $object_cp->info_cp["autotransporte"]["pesobrutovehicular"]; } if(!is_null($object_cp->info_cp["autotransporte"]["placavm"]) && $object_cp->info_cp["autotransporte"]["placavm"] != ""){ $ident_vehicular["placaVM"] = $object_cp->info_cp["autotransporte"]["placavm"]; } if(!is_null($object_cp->info_cp["autotransporte"]["aniomodelovm"]) && $object_cp->info_cp["autotransporte"]["aniomodelovm"] != ""){ $ident_vehicular["anioModeloVM"] = $object_cp->info_cp["autotransporte"]["aniomodelovm"]; } array_push($info_ident_vehicular, $ident_vehicular); $info_autotransporte["identificacionVehicular"] = $info_ident_vehicular; } // Seguros $num_seguros = $object_cp->fetchAutoTransporteSegurosCP($object_cp->info_cp["autotransporte"]["rowid_autotransporte"]); if($num_seguros > 0){ $info_seguros = array(); $seguros = array(); if(!is_null($object_cp->info_cp["autotransporte"]["asegurarespcivil"]) && $object_cp->info_cp["autotransporte"]["asegurarespcivil"] != ""){ $seguros["aseguraRespCivil"] = $object_cp->info_cp["autotransporte"]["asegurarespcivil"]; } if(!is_null($object_cp->info_cp["autotransporte"]["polizarespcivil"]) && $object_cp->info_cp["autotransporte"]["polizarespcivil"] != ""){ $seguros["polizaRespCivil"] = $object_cp->info_cp["autotransporte"]["polizarespcivil"]; } if(!is_null($object_cp->info_cp["autotransporte"]["aseguramedambiente"]) && $object_cp->info_cp["autotransporte"]["aseguramedambiente"] != ""){ $seguros["aseguraMedAmbiente"] = $object_cp->info_cp["autotransporte"]["aseguramedambiente"]; } if(!is_null($object_cp->info_cp["autotransporte"]["polizamedambiente"]) && $object_cp->info_cp["autotransporte"]["polizamedambiente"] != ""){ $seguros["polizaMedAmbiente"] = $object_cp->info_cp["autotransporte"]["polizamedambiente"]; } if(!is_null($object_cp->info_cp["autotransporte"]["aseguracarga"]) && $object_cp->info_cp["autotransporte"]["aseguracarga"] != ""){ $seguros["aseguraCarga"] = $object_cp->info_cp["autotransporte"]["aseguracarga"]; } if(!is_null($object_cp->info_cp["autotransporte"]["polizacarga"]) && $object_cp->info_cp["autotransporte"]["polizacarga"] != ""){ $seguros["polizaCarga"] = $object_cp->info_cp["autotransporte"]["polizacarga"]; } if(!is_null($object_cp->info_cp["autotransporte"]["primaseguro"]) && $object_cp->info_cp["autotransporte"]["primaseguro"] != ""){ $seguros["primaSeguro"] = $object_cp->info_cp["autotransporte"]["primaseguro"]; } array_push($info_seguros, $seguros); $info_autotransporte["seguros"] = $info_seguros; } // Remolques $num_remolques = $object_cp->fetchAutoTransporteRemolqueCP($object_cp->info_cp["autotransporte"]["rowid_autotransporte"]); if($num_remolques > 0){ $info_remolques = array(); $remolques = array(); if(!is_null($object_cp->info_cp["autotransporte"]["subtiporem"]) && $object_cp->info_cp["autotransporte"]["subtiporem"] != ""){ $remolques["subTipoRem"] = $object_cp->info_cp["autotransporte"]["subtiporem"]; } if(!is_null($object_cp->info_cp["autotransporte"]["placa"]) && $object_cp->info_cp["autotransporte"]["placa"] != ""){ $remolques["placa"] = $object_cp->info_cp["autotransporte"]["placa"]; } array_push($info_remolques, $remolques); $info_autotransporte["remolques"] = $info_remolques; } $mercancias_cp["autoTransporte"] = $info_autotransporte; } if($tipo_transporte == "02"){ $maritimo = $object_cp->fetchTransporteMaritimo($facid); $info_maritimo = array(); if(!is_null($object_cp->info_cp["transporte_maritimo"]["permsct"]) && $object_cp->info_cp["transporte_maritimo"]["permsct"] != "" && $object_cp->info_cp["transporte_maritimo"]["permsct"] != -1){ $info_maritimo["permSCT"] = $object_cp->info_cp["transporte_maritimo"]["permsct"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["numpermisosct"]) && $object_cp->info_cp["transporte_maritimo"]["numpermisosct"] != ""){ $info_maritimo["numPermisoSCT"] = $object_cp->info_cp["transporte_maritimo"]["numpermisosct"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["nombreaseg"]) && $object_cp->info_cp["transporte_maritimo"]["nombreaseg"] != ""){ $info_maritimo["nombreAseg"] = $object_cp->info_cp["transporte_maritimo"]["nombreaseg"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["numpolizaseguro"]) && $object_cp->info_cp["transporte_maritimo"]["numpolizaseguro"] != ""){ $info_maritimo["numPolizaSeguro"] = $object_cp->info_cp["transporte_maritimo"]["numpolizaseguro"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["tipoembarcacion"]) && $object_cp->info_cp["transporte_maritimo"]["tipoembarcacion"] != "" && $object_cp->info_cp["transporte_maritimo"]["tipoembarcacion"] != -1){ $info_maritimo["tipoEmbarcacion"] = $object_cp->info_cp["transporte_maritimo"]["tipoembarcacion"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["matricula"]) && $object_cp->info_cp["transporte_maritimo"]["matricula"] != ""){ $info_maritimo["matricula"] = $object_cp->info_cp["transporte_maritimo"]["matricula"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["numeroomi"]) && $object_cp->info_cp["transporte_maritimo"]["numeroomi"] != ""){ $info_maritimo["numeroOMI"] = $object_cp->info_cp["transporte_maritimo"]["numeroomi"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["anioembarcacion"]) && $object_cp->info_cp["transporte_maritimo"]["anioembarcacion"] != ""){ $info_maritimo["anioEmbarcacion"] = $object_cp->info_cp["transporte_maritimo"]["anioembarcacion"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["nombreembarc"]) && $object_cp->info_cp["transporte_maritimo"]["nombreembarc"] != ""){ $info_maritimo["nombreEmbarc"] = $object_cp->info_cp["transporte_maritimo"]["nombreembarc"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["nacionalidadembarc"]) && $object_cp->info_cp["transporte_maritimo"]["nacionalidadembarc"] != "" && $object_cp->info_cp["transporte_maritimo"]["nacionalidadembarc"] != -1){ $info_maritimo["nacionalidadEmbarc"] = $object_cp->info_cp["transporte_maritimo"]["nacionalidadembarc"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["unidadesdearqbruto"]) && $object_cp->info_cp["transporte_maritimo"]["unidadesdearqbruto"] != ""){ $info_maritimo["unidadesDeArqBruto"] = $object_cp->info_cp["transporte_maritimo"]["unidadesdearqbruto"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["tipocarga"]) && $object_cp->info_cp["transporte_maritimo"]["tipocarga"] != "" && $object_cp->info_cp["transporte_maritimo"]["tipocarga"] != -1){ $info_maritimo["tipoCarga"] = $object_cp->info_cp["transporte_maritimo"]["tipocarga"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["eslora"]) && $object_cp->info_cp["transporte_maritimo"]["eslora"] != ""){ $info_maritimo["eslora"] = $object_cp->info_cp["transporte_maritimo"]["eslora"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["manga"]) && $object_cp->info_cp["transporte_maritimo"]["manga"] != ""){ $info_maritimo["manga"] = $object_cp->info_cp["transporte_maritimo"]["manga"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["calado"]) && $object_cp->info_cp["transporte_maritimo"]["calado"] != ""){ $info_maritimo["calado"] = $object_cp->info_cp["transporte_maritimo"]["calado"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["puntal"]) && $object_cp->info_cp["transporte_maritimo"]["puntal"] != ""){ $info_maritimo["puntal"] = $object_cp->info_cp["transporte_maritimo"]["puntal"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["lineanaviera"]) && $object_cp->info_cp["transporte_maritimo"]["lineanaviera"] != ""){ $info_maritimo["lineaNaviera"] = $object_cp->info_cp["transporte_maritimo"]["lineanaviera"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["nombreagentenaviero"]) && $object_cp->info_cp["transporte_maritimo"]["nombreagentenaviero"] != ""){ $info_maritimo["nombreAgenteNaviero"] = $object_cp->info_cp["transporte_maritimo"]["nombreagentenaviero"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["numautorizacionnaviero"]) && $object_cp->info_cp["transporte_maritimo"]["numautorizacionnaviero"] != "" && $object_cp->info_cp["transporte_maritimo"]["numautorizacionnaviero"] != -1){ $info_maritimo["numAutorizacionNaviero"] = $object_cp->info_cp["transporte_maritimo"]["numautorizacionnaviero"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["numviaje"]) && $object_cp->info_cp["transporte_maritimo"]["numviaje"] != ""){ $info_maritimo["numViaje"] = $object_cp->info_cp["transporte_maritimo"]["numviaje"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["numconocembarc"]) && $object_cp->info_cp["transporte_maritimo"]["numconocembarc"] != ""){ $info_maritimo["numConocEmbarc"] = $object_cp->info_cp["transporte_maritimo"]["numconocembarc"]; } if(!is_null($object_cp->info_cp["transporte_maritimo"]["permisotempnavegacion"]) && $object_cp->info_cp["transporte_maritimo"]["permisotempnavegacion"] != ""){ $info_maritimo["permisoTempNavegacion"] = $object_cp->info_cp["transporte_maritimo"]["permisotempnavegacion"]; } // Contenedores if($object_cp->info_cp["transporte_maritimo"]["num_contenedores"] > 0){ $info_mat_contendor = array(); foreach ($object_cp->info_cp["transporte_maritimo"]["contenedores"] as $key => $value) { // print '
';
                    	// 	print_r($value);
                    	// print '
'; $mat_contenedor = array(); if(!is_null($value["tipocontenedor"]) && $value["tipocontenedor"] != "" && $value["tipocontenedor"] != -1){ $mat_contenedor["tipoContenedor"] = $value["tipocontenedor"]; } if(!is_null($value["matriculacontenedor"]) && $value["matriculacontenedor"] != ""){ $mat_contenedor["matriculaContenedor"] = $value["matriculacontenedor"]; } if(!is_null($value["numprecinto"]) && $value["numprecinto"] != ""){ $mat_contenedor["numPrecinto"] = $value["numprecinto"]; } if(!is_null($value["idccprelacionado"]) && $value["idccprelacionado"] != ""){ $mat_contenedor["idCCPRelacionado"] = $value["idccprelacionado"]; } if(!is_null($value["placavmccp"]) && $value["placavmccp"] != ""){ $mat_contenedor["placaVMCCP"] = $value["placavmccp"]; } if(!is_null($value["fechacertificacionccp"]) && $value["fechacertificacionccp"] != "" && !is_null($value["horacertificacionccp"]) && $value["horacertificacionccp"] != ""){ $mat_contenedor["fechaCertificacionCCP"] = $value["fechacertificacionccp"]."T".$value["horacertificacionccp"]; } // print '
'; print_r($value); print '
'; if($object_cp->fac_cp31 == 1){ $num_remolques = $object_cp->fetchTransporteMaritimoRemolquesCP($object_cp->info_cp["transporte_maritimo"]["rowid_transporte_maritimo"], $value["rowid"]); if($num_remolques > 0){ $lista_remolques = $object_cp->info_cp["transporte_maritimo"]["remolques"]; $info_mat_remolques = array(); foreach ($lista_remolques as $key => $value) { $mat_remolques = array(); if(!is_null($value["subtiporemccp"]) && $value["subtiporemccp"] != "" && $value["subtiporemccp"] != -1){ $mat_remolques["subTipoRemCCP"] = $value["subtiporemccp"]; } if(!is_null($value["placaccp"]) && $value["placaccp"] != ""){ $mat_remolques["placaCCP"] = $value["placaccp"]; } array_push($info_mat_remolques, $mat_remolques); } $mat_contenedor["remolquesCCP"] = $info_mat_remolques; // print '
Lista remolques::';
					    		// 	print_r($lista_remolques);
					    		// print '
'; } } array_push($info_mat_contendor, $mat_contenedor); } $info_maritimo["contenedores"] = $info_mat_contendor; } // Remolques if($object_cp->fac_cp30 == 1){ if($object_cp->info_cp["transporte_maritimo"]["num_remolques"] > 0){ $info_mat_remolques = array(); foreach ($object_cp->info_cp["transporte_maritimo"]["remolques"] as $key => $value) { // print '
';
	                		// 	print_r($value);
	                		// print '
'; $mat_remolques = array(); if(!is_null($value["subtiporemccp"]) && $value["subtiporemccp"] != "" && $value["subtiporemccp"] != -1){ $mat_remolques["subTipoRemCCP"] = $value["subtiporemccp"]; } if(!is_null($value["placaccp"]) && $value["placaccp"] != ""){ $mat_remolques["placaCCP"] = $value["placaccp"]; } array_push($info_mat_remolques, $mat_remolques); } $info_maritimo["remolquesCCP"] = $info_mat_remolques; } } $mercancias_cp["transporteMaritimo"] = $info_maritimo; } if($tipo_transporte == "03"){ $aereo = $object_cp->fetchTransporteAereo($facid); $info_aereo = array(); if(!is_null($object_cp->info_cp["transporte_aereo"]["permsct"]) && $object_cp->info_cp["transporte_aereo"]["permsct"] != "" && $object_cp->info_cp["transporte_aereo"]["permsct"] != -1){ $info_aereo["permSCT"] = $object_cp->info_cp["transporte_aereo"]["permsct"]; } if(!is_null($object_cp->info_cp["transporte_aereo"]["numpermisosct"]) && $object_cp->info_cp["transporte_aereo"]["numpermisosct"] != ""){ $info_aereo["numPermisoSCT"] = $object_cp->info_cp["transporte_aereo"]["numpermisosct"]; } if(!is_null($object_cp->info_cp["transporte_aereo"]["matriculaaeronave"]) && $object_cp->info_cp["transporte_aereo"]["matriculaaeronave"] != ""){ $info_aereo["matriculaAeronave"] = $object_cp->info_cp["transporte_aereo"]["matriculaaeronave"]; } if(!is_null($object_cp->info_cp["transporte_aereo"]["nombreaseg"]) && $object_cp->info_cp["transporte_aereo"]["nombreaseg"] != ""){ $info_aereo["nombreAseg"] = $object_cp->info_cp["transporte_aereo"]["nombreaseg"]; } if(!is_null($object_cp->info_cp["transporte_aereo"]["numpolizaseguro"]) && $object_cp->info_cp["transporte_aereo"]["numpolizaseguro"] != ""){ $info_aereo["numPolizaSeguro"] = $object_cp->info_cp["transporte_aereo"]["numpolizaseguro"]; } if(!is_null($object_cp->info_cp["transporte_aereo"]["numeroguia"]) && $object_cp->info_cp["transporte_aereo"]["numeroguia"] != ""){ $info_aereo["numeroGuia"] = $object_cp->info_cp["transporte_aereo"]["numeroguia"]; } if(!is_null($object_cp->info_cp["transporte_aereo"]["lugarcontrato"]) && $object_cp->info_cp["transporte_aereo"]["lugarcontrato"] != ""){ $info_aereo["lugarContrato"] = $object_cp->info_cp["transporte_aereo"]["lugarcontrato"]; } if(!is_null($object_cp->info_cp["transporte_aereo"]["codigotransportista"]) && $object_cp->info_cp["transporte_aereo"]["codigotransportista"] != "" && $object_cp->info_cp["transporte_aereo"]["codigotransportista"] != -1){ $info_aereo["codigoTransportista"] = $object_cp->info_cp["transporte_aereo"]["codigotransportista"]; } if(!is_null($object_cp->info_cp["transporte_aereo"]["rfcembarcador"]) && $object_cp->info_cp["transporte_aereo"]["rfcembarcador"] != ""){ $info_aereo["RFCEmbarcador"] = $object_cp->info_cp["transporte_aereo"]["rfcembarcador"]; } if(!is_null($object_cp->info_cp["transporte_aereo"]["numregidtribembarc"]) && $object_cp->info_cp["transporte_aereo"]["numregidtribembarc"] != ""){ $info_aereo["numRegIdTribEmbarc"] = $object_cp->info_cp["transporte_aereo"]["numregidtribembarc"]; } if(!is_null($object_cp->info_cp["transporte_aereo"]["residenciafiscalembarc"]) && $object_cp->info_cp["transporte_aereo"]["residenciafiscalembarc"] != "" && $object_cp->info_cp["transporte_aereo"]["residenciafiscalembarc"] != -1){ $info_aereo["residenciaFiscalEmbarc"] = $object_cp->info_cp["transporte_aereo"]["residenciafiscalembarc"]; } if(!is_null($object_cp->info_cp["transporte_aereo"]["nombreembarcador"]) && $object_cp->info_cp["transporte_aereo"]["nombreembarcador"] != ""){ $info_aereo["nombreEmbarcador"] = $object_cp->info_cp["transporte_aereo"]["nombreembarcador"]; } $mercancias_cp["transporteAereo"] = $info_aereo; } if($tipo_transporte == "04"){ $ferroviario = $object_cp->fetchTransporteFerroviarioCP($facid); $info_ferroviario = array(); if(!is_null($object_cp->info_cp["transporte_ferroviario"]["tipodeservicio"]) && $object_cp->info_cp["transporte_ferroviario"]["tipodeservicio"] != "" && $object_cp->info_cp["transporte_ferroviario"]["tipodeservicio"] != -1){ $info_ferroviario["tipoDeServicio"] = $object_cp->info_cp["transporte_ferroviario"]["tipodeservicio"]; } if(!is_null($object_cp->info_cp["transporte_ferroviario"]["tipodetrafico"]) && $object_cp->info_cp["transporte_ferroviario"]["tipodetrafico"] != "" && $object_cp->info_cp["transporte_ferroviario"]["tipodetrafico"] != -1){ $info_ferroviario["tipoDeTrafico"] = $object_cp->info_cp["transporte_ferroviario"]["tipodetrafico"]; } if(!is_null($object_cp->info_cp["transporte_ferroviario"]["nombreaseg"]) && $object_cp->info_cp["transporte_ferroviario"]["nombreaseg"] != ""){ $info_ferroviario["nombreAseg"] = $object_cp->info_cp["transporte_ferroviario"]["nombreaseg"]; } if(!is_null($object_cp->info_cp["transporte_ferroviario"]["numpolizaseguro"]) && $object_cp->info_cp["transporte_ferroviario"]["numpolizaseguro"] != ""){ $info_ferroviario["numPolizaSeguro"] = $object_cp->info_cp["transporte_ferroviario"]["numpolizaseguro"]; } if($object_cp->info_cp["transporte_ferroviario"]["num_derechospaso"] > 0){ $info_tf_derechos_paso = array(); foreach ($object_cp->info_cp["transporte_ferroviario"]["derechosdepaso"] as $key => $value) { // print '
';
                    	// 	print_r($value);
                    	// print '
'; $derechos_paso = array(); if(!is_null($value["tipoderechodepaso"]) && $value["tipoderechodepaso"] != ""){ $derechos_paso["tipoDerechoDePaso"] = $value["tipoderechodepaso"]; } if(!is_null($value["kilometrajepagado"]) && $value["kilometrajepagado"] != ""){ $derechos_paso["kilometrajePagado"] = $value["kilometrajepagado"]; } array_push($info_tf_derechos_paso, $derechos_paso); } $info_ferroviario["derechosDePaso"] = $info_tf_derechos_paso; } if($object_cp->info_cp["transporte_ferroviario"]["num_carros"] > 0){ $info_tf_carros = array(); foreach ($object_cp->info_cp["transporte_ferroviario"]["carros"] as $key => $value) { // print '
';
                		// 	print_r($value);
                		// print '
'; $tf_carros = array(); if(!is_null($value["tipocarro"]) && $value["tipocarro"] != "" && $value["tipocarro"] != -1){ $tf_carros["tipoCarro"] = $value["tipocarro"]; } if(!is_null($value["matriculacarro"]) && $value["matriculacarro"] != ""){ $tf_carros["matriculaCarro"] = $value["matriculacarro"]; } if(!is_null($value["guiacarro"]) && $value["guiacarro"] != ""){ $tf_carros["guiaCarro"] = $value["guiacarro"]; } if(!is_null($value["toneladasnetascarro"]) && $value["toneladasnetascarro"] != ""){ $tf_carros["toneladasNetasCarro"] = $value["toneladasnetascarro"]; } if($value["num_contenedores"] > 0){ $object_cp->fetchTransporteFerroviarioContenedoresCP($value["rowid"]); $tf_contenedores = array(); foreach ($object_cp->info_cp["transporte_ferroviario"]["contenedores"] as $key => $value) { // print '
';
                            	// 	print_r($value);
                            	// print '
'; $tf_contenedor = array(); if(!is_null($value["tipocontenedor"]) && $value["tipocontenedor"] != "" && $value["tipocontenedor"] != -1){ $tf_contenedor["tipoContenedor"] = $value["tipocontenedor"]; } if(!is_null($value["pesocontenedorvacio"]) && $value["pesocontenedorvacio"] != ""){ $tf_contenedor["pesoContenedorVacio"] = $value["pesocontenedorvacio"]; } if(!is_null($value["pesonetomercancia"]) && $value["pesonetomercancia"] != ""){ $tf_contenedor["pesoNetoMercancia"] = $value["pesonetomercancia"]; } array_push($tf_contenedores, $tf_contenedor); } $tf_carros["contenedor"] = $tf_contenedores; } array_push($info_tf_carros, $tf_carros); } $info_ferroviario["carro"] = $info_tf_carros; } $mercancias_cp["transporteFerroviario"] = $info_ferroviario; } $cartaPorte["mercancias"] = $mercancias_cp; // Termina Mercancias // Inicia Figura Transporte $object_cp->fetchFigurasTransporteCP($facid); if(is_array($object_cp->info_cp["figurastransporte"]) && count($object_cp->info_cp["figurastransporte"]) > 0){ $info_figuras_transporte = array(); foreach ($object_cp->info_cp["figurastransporte"] as $key => $value) { // print '
';
					// 	print_r($value);
					// print '
'; $figura_transporte = array(); if(!is_null($value["tipofigura"]) && $value["tipofigura"] != "" && $value["tipofigura"] != -1){ $figura_transporte["tipoFigura"] = $value["tipofigura"]; } if(!is_null($value["rfcfigura"]) && $value["rfcfigura"] != ""){ $figura_transporte["RFCFigura"] = $value["rfcfigura"]; } if(!is_null($value["numlicencia"]) && $value["numlicencia"] != ""){ $figura_transporte["numLicencia"] = $value["numlicencia"]; } if(!is_null($value["nombrefigura"]) && $value["nombrefigura"] != ""){ $figura_transporte["nombreFigura"] = $value["nombrefigura"]; } if(!is_null($value["numregidtribfigura"]) && $value["numregidtribfigura"] != ""){ $figura_transporte["numRegIdTribFigura"] = $value["numregidtribfigura"]; } if(!is_null($value["residenciafiscalfigura"]) && $value["residenciafiscalfigura"] != "" && $value["residenciafiscalfigura"] != -1){ $figura_transporte["residenciaFiscalFigura"] = $value["residenciafiscalfigura"]; } // Partes Transporte if($value["num_partestransporte"] != 0){ $object_cp->fetchPartesTransporteCP($value["rowid"]); $info_ft_partes = array(); foreach ($object_cp->info_cp["partestransporte"] as $key => $value2) { // print '
';
                        	// 	print_r($value2);
                        	// print '
'; $ft_partes = array(); if(!is_null($value2["partetransporte"]) && $value2["partetransporte"] != "" && $value2["partetransporte"] != -1){ $ft_partes["parteTransporte"] = $value2["partetransporte"]; } array_push($info_ft_partes, $ft_partes); } $figura_transporte["partesTransporte"] = $info_ft_partes; } // Domicilio if($value["num_domicilio"] > 0){ $object_cp->fetchDomicilioFiguraCP($value["rowid"]); // print '
';
                    	// 	print_r($object_cp->info_cp["domiciliofigura"]);
                    	// print '
'; $domicilio = array(); if(!is_null($object_cp->info_cp["domiciliofigura"]["calle"]) && $object_cp->info_cp["domiciliofigura"]["calle"] != ""){ $domicilio["calle"] = $object_cp->info_cp["domiciliofigura"]["calle"]; } if(!is_null($object_cp->info_cp["domiciliofigura"]["numeroexterior"]) && $object_cp->info_cp["domiciliofigura"]["numeroexterior"] != ""){ $domicilio["numeroExterior"] = $object_cp->info_cp["domiciliofigura"]["numeroexterior"]; } if(!is_null($object_cp->info_cp["domiciliofigura"]["numerointerior"]) && $object_cp->info_cp["domiciliofigura"]["numerointerior"] != ""){ $domicilio["numeroInterior"] = $object_cp->info_cp["domiciliofigura"]["numerointerior"]; } if(!is_null($object_cp->info_cp["domiciliofigura"]["colonia"]) && $object_cp->info_cp["domiciliofigura"]["colonia"] != ""){ $domicilio["colonia"] = $object_cp->info_cp["domiciliofigura"]["colonia"]; } if(!is_null($object_cp->info_cp["domiciliofigura"]["localidad"]) && $object_cp->info_cp["domiciliofigura"]["localidad"] != ""){ $domicilio["localidad"] = $object_cp->info_cp["domiciliofigura"]["localidad"]; } if(!is_null($object_cp->info_cp["domiciliofigura"]["referencia"]) && $object_cp->info_cp["domiciliofigura"]["referencia"] != ""){ $domicilio["referencia"] = $object_cp->info_cp["domiciliofigura"]["referencia"]; } if(!is_null($object_cp->info_cp["domiciliofigura"]["municipio"]) && $object_cp->info_cp["domiciliofigura"]["municipio"] != ""){ $domicilio["municipio"] = $object_cp->info_cp["domiciliofigura"]["municipio"]; } if(!is_null($object_cp->info_cp["domiciliofigura"]["estado"]) && $object_cp->info_cp["domiciliofigura"]["estado"] != ""){ $domicilio["estado"] = $object_cp->info_cp["domiciliofigura"]["estado"]; } if(!is_null($object_cp->info_cp["domiciliofigura"]["pais"]) && $object_cp->info_cp["domiciliofigura"]["pais"] != "" && $object_cp->info_cp["domiciliofigura"]["pais"] != -1){ $domicilio["pais"] = $object_cp->info_cp["domiciliofigura"]["pais"]; } if(!is_null($object_cp->info_cp["domiciliofigura"]["codigopostal"]) && $object_cp->info_cp["domiciliofigura"]["codigopostal"] != ""){ $domicilio["codigoPostal"] = $object_cp->info_cp["domiciliofigura"]["codigopostal"]; } $figura_transporte["domicilio"] = $domicilio; } array_push($info_figuras_transporte, $figura_transporte); } $cartaPorte["figuraTransporte"] = $info_figuras_transporte; } // Termina Figura Transporte $adicionales["cp"] = $cartaPorte; } // print '
';
		// 	print_r($adicionales);
		// print '
'; } // print '
'; print_r($adicionales); print '
'; // die; //Termina Carta Porte //Inicia Ajuste para Factura Traslado if($header["tipoDeComprobante"] == 'T'){ $moneda = "XXX"; $header["moneda"] = "XXX"; $header["subTotal"] = "0"; $header["total"] = "0"; $header["metodoDePago"] = null; $header["formaDePago"] = null; $header["condicionesDePago"] = null; } //Termina Ajuste para Factura de Traslado //DATOS DEL EMISOR $emisor=array(); $emisor["emisorRFC"]=$rfc_emisor; $emisor["emisorRegimen"]=limpiar($regimen); //COMPLEMENTARIOS EMISOR if( $razon_social_emisor!="" ){ // $emisor["nombre"]=limpiar(trim(preg_replace("/ +/"," ",$razon_social_emisor))); // $emisor["nombre"] = trim(mb_strtoupper($razon_social_emisor)); $razon_social_emisor = trim(mb_strtoupper($razon_social_emisor)); $emisor["nombre"] = $razon_social_emisor; #Inicia Validación por si el RFC del receptor incluye la letra "Ñ" $buscar_letra = strpos($razon_social_emisor, 'Ñ'); if ($buscar_letra >= 0 && $buscar_letra != '') { $array_nom_emisor = explode("Ñ",$razon_social_emisor); // $emisor["nombre"] = $array_nom_emisor[0].utf8_decode("Ñ").$array_nom_emisor[1]; $emisor["nombre"] = implode(utf8_decode("Ñ"), $array_nom_emisor); } #Termina Validación por si el RFC del receptor incluye la letra "Ñ" } if( $emisor_calle!="" ){ $emisor["calle"]=trim(preg_replace("/ +/"," ",$emisor_calle)); } if( $col_emisor!="" ){ $emisor["colonia"]=trim(preg_replace("/ +/"," ",$col_emisor)); } if( $emisor_noext!="" ){ $emisor["noExterior"]=trim(preg_replace("/ +/"," ",$emisor_noext)); } if( $emisor_noint!="" ){ $emisor["noInterior"]=trim(preg_replace("/ +/"," ",$emisor_noint)); } if( $emisor_delompio!="" ){ $emisor["municipio"]=trim(preg_replace("/ +/"," ",$emisor_delompio)); } if( $estado_emisor!="" ){ $emisor["estado"]=limpiar(trim(preg_replace("/ +/"," ",$estado_emisor))); } if( $pais!="" ){ $emisor["pais"]=trim(preg_replace("/ +/"," ",$pais)); } if( $cp!="" ){ $emisor["codigoPostal"]=trim(preg_replace("/ +/"," ",$cp)); } // $emisor["codigoPostal"] = "21001"; //DATOS DEL RECEPTOR $receptor=array(); $receptor["rfc"]=$datareceptor_main["rfc"]; //COMPLEMENTARIOS RECEPTOR $sqn="SELECT tipo_operacion, clv_pedimento, no_exportador, incoterm, observaciones, num_identificacion FROM ".MAIN_DB_PREFIX."cfdimx_facture_comercio_extranjero WHERE fk_facture=".$facid; $rqn=$db->query($sqn); $numrn=$db->num_rows($rqn); if($numrn>0){ $auxpais=$pais; $sqn="SELECT b.code_departement, c.code_iso FROM ".MAIN_DB_PREFIX."societe a, ".MAIN_DB_PREFIX."c_departements b, ".MAIN_DB_PREFIX."c_country c WHERE a.fk_departement=b.rowid AND a.fk_pays=c.rowid AND a.rowid=".$datareceptor_main["rowid"]; $rqn=$db->query($sqn); $rsn=$db->fetch_object($rqn); $pais=$rsn->code_iso; $datareceptor_main["estado"]=$rsn->code_departement; $receptor_delompio=$receptor_cod_municipio; $receptor["residenciaFiscal"] = $pais; } if( $datareceptor_main["razon_social"]!="" ){ $receptor["nombre"]=trim(preg_replace("/ +/"," ",$datareceptor_main["razon_social"])); } if( $receptor_calle!="" ){ $receptor["calle"]=trim(preg_replace("/ +/"," ",$receptor_calle)); } if( $receptor_colonia!="" ){ $receptor["colonia"]=trim(preg_replace("/ +/"," ",$receptor_colonia)); } if( $receptor_noext!="" ){ $receptor["noExterior"]=trim(preg_replace("/ +/"," ",$receptor_noext)); } if( $receptor_noint!="" ){ $receptor["noInterior"]=trim(preg_replace("/ +/"," ",$receptor_noint)); } if( $receptor_delompio!="" ){ $receptor["municipio"]=trim(preg_replace("/ +/"," ",$receptor_delompio)); } if( $datareceptor_main["estado"]!="" ){ $receptor["estado"]=limpiar(trim(preg_replace("/ +/"," ",$datareceptor_main["estado"]))); } $sqm2 = "SHOW COLUMNS FROM ".MAIN_DB_PREFIX."facture_extrafields LIKE 'numregtrib'"; $resqlm2=$db->query($sqm2); $existe_2 = $db->num_rows($resqlm2); $auxpais = null; // if( $existe_1 > 0 && $existe_2>0){ if($existe_2 > 0){ $sqlm = "SELECT numregtrib FROM ".MAIN_DB_PREFIX."facture_extrafields WHERE fk_object = " .$facid; $resqlm=$db->query($sqlm); $objm = $db->fetch_object($resqlm); if($objm->numregtrib!="" && $objm->numregtrib!=NULL && $objm->numregtrib!=null){ $auxpais=$pais; $sqn="SELECT b.code_departement, c.code_iso FROM ".MAIN_DB_PREFIX."societe a, ".MAIN_DB_PREFIX."c_departements b, ".MAIN_DB_PREFIX."c_country c WHERE a.fk_departement=b.rowid AND a.fk_pays=c.rowid AND a.rowid=".$datareceptor_main["rowid"]; $rqn=$db->query($sqn); $rsn=$db->fetch_object($rqn); $pais=$rsn->code_iso; $receptor["numRegIdTrib"]=$objm->numregtrib; } } if( $pais!="" ){ $receptor["pais"]=trim(preg_replace("/ +/"," ",$pais));///residencia } if($factura_usocfdi!=""){ $receptor["usoCFDI"]=trim(preg_replace("/ +/"," ",$factura_usocfdi)); } $pais=$auxpais; if( $datareceptor_main["cp"]!="" ){ $receptor["codigoPostal"]=trim(preg_replace("/ +/"," ",$datareceptor_main["cp"])); } //Inicia Nueva obtencion de Datos Fiscales Emisor if(strcmp($version_cfdi_sat, "4.0") == 0){ $receptor = null; $objFacturaCFDI = new FacturaCFDI($db); $objFacturaCFDI->entidad = $conf->entity; $num_domicilio_fiscal = $objFacturaCFDI->getDomiciliosFiscalesCliente($datareceptor_main["rowid"], 1); if($num_domicilio_fiscal > 0){ for ($i=0; $i < count($objFacturaCFDI->lista_domicilios); $i++) { // print '
'; print_r($objFacturaCFDI->lista_domicilios[$i]); print '
'; // $soc_rfc = $objFacturaCFDI->lista_domicilios[$i]->rfc; $receptor["rfc"] = $objFacturaCFDI->lista_domicilios[$i]->rfc; $receptor["usoCFDI"] = trim(preg_replace("/ +/"," ",$factura_usocfdi)); $receptor["nombre"] = utf8_decode($objFacturaCFDI->lista_domicilios[$i]->nombre); $receptor["codigoPostal"] = $objFacturaCFDI->lista_domicilios[$i]->cp; $receptor["regimenFiscal"] = $objFacturaCFDI->lista_domicilios[$i]->regimenfiscal; if($objFacturaCFDI->lista_domicilios[$i]->numregidtrib != "" && $objFacturaCFDI->lista_domicilios[$i]->numregidtrib != null){ $receptor["numRegIdTrib"] = $objFacturaCFDI->lista_domicilios[$i]->numregidtrib; } if($objFacturaCFDI->lista_domicilios[$i]->residencia_fiscal != "" && $objFacturaCFDI->lista_domicilios[$i]->residencia_fiscal != null && $objFacturaCFDI->lista_domicilios[$i]->residencia_fiscal != -1){ $receptor["residenciaFiscal"] = $objFacturaCFDI->lista_domicilios[$i]->residencia_fiscal; } //Inicia Ajustes para Cliente Mostrador XAXX010101000, XEXX010101000 if(strcmp($receptor["rfc"], "XAXX010101000") == 0 || strcmp($receptor["rfc"], "XEXX010101000") == 0){ $receptor["codigoPostal"] = $header["lugarExpedicion"]; $receptor["regimenFiscal"] = 616; // $receptor["usoCFDI"] = "P01"; } //Termina Ajustes para Cliente Mostrador XAXX010101000 if($validar_cce == 'SI'){ $receptor["calle"]=trim(preg_replace("/ +/"," ",$objFacturaCFDI->lista_domicilios[$i]->calle)); $receptor["colonia"]=trim(preg_replace("/ +/"," ",$objFacturaCFDI->lista_domicilios[$i]->clave_col)); $receptor["noExterior"]=trim(preg_replace("/ +/"," ",$objFacturaCFDI->lista_domicilios[$i]->noint)); $receptor["noInterior"]=trim(preg_replace("/ +/"," ",$objFacturaCFDI->lista_domicilios[$i]->noext)); $receptor["municipio"]=trim(preg_replace("/ +/"," ",$objFacturaCFDI->lista_domicilios[$i]->clave_mpio)); $receptor["estado"]=limpiar(trim(preg_replace("/ +/"," ",$objFacturaCFDI->lista_domicilios[$i]->estado))); $receptor["pais"] = $objFacturaCFDI->lista_domicilios[$i]->pais; } break; } } } // print '
'; print_r($receptor); print '
'; // die; // $valida_rfc_emisor = validaRFC($rfc_emisor); // $valida_rfc_receptor = validaRFC($receptor["rfc"]); // print '999'; die; #Inicia Validación por si el RFC del receptor incluye la letra "Ñ" $buscar_letra = strpos($receptor["rfc"], 'Ñ'); if ($buscar_letra >= 0 && $buscar_letra != '') { $array_rfc_receptor = explode("Ñ",$receptor["rfc"]); $receptor["rfc"] = $array_rfc_receptor[0].utf8_decode("Ñ").$array_rfc_receptor[1]; $valida_rfc_receptor=true; } #Termina Validación por si el RFC del receptor incluye la letra "Ñ" ##Elimnar esto // $info_nomina = array(); // $info_nomina[] = array( // "version" => "1.2", // "tipoNomina" => "O" // ); // $adicionales["nomina"] = $info_nomina; // print '72727272'; // die; /* // Complemento INE $info_ine = array( "version" => "1.1", "tipoProceso" => "Campa".utf8_decode("ñ")."a", // "tipoComite" => "" // "idContabilidad" => "" "entidad" => array( "claveEntidad" => "AGU", "ambito" => "Federal", "contabilidad" => array( "idContabilidad" => "9581" ) ) ); $adicionales["ine"] = $info_ine; */ if( $header != null && $conceptos != null && $emisor != null && $receptor != null && $rfc_emisor != null && $passwd_timbrado != null && $adicionales != null && $errores_factura == null && $errores_conceptos == null ){ // if($valida_rfc_emisor && $valida_rfc_receptor){ $sql = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx WHERE fk_facture=".$facid." AND entity_id = " . $conf->entity; $resql=$db->query( $sql ); $num_llx_cfdimx = $db->num_rows($resql); if( $num_llx_cfdimx < 1){ //Tabla para controlar timrbados de facturas y que usuarios las generan $sql_control_timbrado = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_control_timbrado"; $sql_control_timbrado .= " WHERE factura_rowid = ".$facid; $sql_control_timbrado .= " AND tipo_timbrado = ".$modo_timbrado; $res_control_timbrado = $db->query($sql_control_timbrado); $registros_control_timbrado = $db->num_rows($res_control_timbrado); $inserta_control = 0; if($registros_control_timbrado > 0){ $obj_control_timbrado = $db->fetch_object($res_control_timbrado); $inserta_control = 1; if($obj_control_timbrado->estatus == 0){ $registros_control_timbrado = 0; // $header["fecha"] = $obj_control_timbrado->factura_fecha_timbrado; } } // $header["fecha"] = "2021-12-10T00:13:12"; unset($res_control_timbrado); //Validacion para que solo entre una vez a la petición del timbrado if($registros_control_timbrado == 0){ //Se inserta el registro en la primera petición $sql_insert_control = "INSERT INTO ".MAIN_DB_PREFIX."cfdimx_control_timbrado"; $sql_insert_control .= "("; $sql_insert_control .= " factura_rowid,"; $sql_insert_control .= " factura_serie,"; $sql_insert_control .= " factura_folio,"; $sql_insert_control .= " factura_fecha_timbrado,"; $sql_insert_control .= " tipo_timbrado,"; $sql_insert_control .= " usuario_rowid,"; $sql_insert_control .= " estatus,"; $sql_insert_control .= " entity_id"; $sql_insert_control .= ")"; $sql_insert_control .= "VALUES"; $sql_insert_control .= "("; $sql_insert_control .= "'".$facid."',"; $sql_insert_control .= "'".$serie."',"; $sql_insert_control .= "'".$folio."',"; $sql_insert_control .= "'".$header["fecha"]."',"; $sql_insert_control .= "'".$modo_timbrado."',"; $sql_insert_control .= "'".$user->id."',"; $sql_insert_control .= "0,"; $sql_insert_control .= "'".$conf->entity."'"; $sql_insert_control .= ");"; if($inserta_control == 0){ $res_insert_control = $db->query($sql_insert_control); } unset($sql_insert_control); //Impresion de los arreglos que se mandan a timbrar if($conf->global->CFDIMX_DEBUG_TIMBRADO == 1){ print '
header
'; print_r($header); print '
'; print '
conceptos
'; print_r($conceptos); print '
'; print '
emisor
'; print_r($emisor); print '
'; print '
receptor
'; print_r($receptor); print '
'; print '
rfc_emisor
'; print_r($rfc_emisor); print '
'; print '
passwd_timbrado
'; print_r($passwd_timbrado); print '
'; print '
adicionales
'; print_r($adicionales); print '
'; } //Peticion de timbrado al WS $client = new nusoap_client($wscfdi, 'wsdl'); $result = $client->call("timbraCFDI", array( "comprobante"=>$header, "conceptos"=>$conceptos, "emisor"=>$emisor, "receptor"=>$receptor, "timbrado_usuario"=>$rfc_emisor, "timbrado_password"=>$passwd_timbrado, "adicionales"=>$adicionales ) ); if($conf->global->CFDIMX_DEBUG_TIMBRADO == 1){ print '
result
'; print_r($result); print '
'; } //Timbrado de Factura Correcto if($result["return"]["rsp"] == 1 || $result["return"]["rsp"] == 307){ //Se actualiza el control con el estatus de factura timbrada $sql_update_control = "UPDATE ".MAIN_DB_PREFIX."cfdimx_control_timbrado"; $sql_update_control .= " SET"; $sql_update_control .= " estatus = 1"; $sql_update_control .= " WHERE factura_rowid = ".$facid; $sql_update_control .= " AND tipo_timbrado = ".$modo_timbrado; $res_update_control = $db->query($sql_update_control); unset($sql_update_control); //ADDENDA INICIO $sqlm = "SHOW COLUMNS FROM ".MAIN_DB_PREFIX."facture_extrafields LIKE 'addendacfdi'"; $resqlm=$db->query($sqlm); $existe_addendacfdi = $db->num_rows($resqlm); if( $existe_addendacfdi > 0 ){ $sqlm = "SELECT addendacfdi FROM ".MAIN_DB_PREFIX."facture_extrafields WHERE fk_object = ".$facid; $resqlm=$db->query($sqlm); $objm = $db->fetch_object($resqlm); if(trim($objm->addendacfdi)!="" && $objm->addendacfdi!=NULL && $objm->addendacfdi!=null){ $xel = new SimpleXMLElement($result["return"]["xml"]); $xel->addChild($objm->addendacfdi); function remultimo($buscar, $remplazar, $texto){ $pos = strrpos($texto, $buscar); if($pos !== false){ $texto = substr_replace($texto, $remplazar, $pos, strlen($buscar)); } return $texto; } $result["return"]["xml"]=remultimo("/>","",$xel->asXML()); } } //ADDENDA FIN $separa_ftimbrado = explode("T",$result["return"]["fechaTimbrado"]); if($serie == '' || $folio == ''){ $guion = ""; }else{ $guion = "-"; } // if(file_exists($conf->facture->dir_output."/".strtoupper($serie).$guion.$folio)){}else{ // mkdir($conf->facture->dir_output."/".strtoupper($serie).$guion.$folio,0700); // } if(file_exists($conf->facture->dir_output."/".$serie.$guion.$folio)){}else{ mkdir($conf->facture->dir_output."/".$serie.$guion.$folio,0700); } // $file_xml = fopen ($conf->facture->dir_output."/".strtoupper($serie).$guion.$folio."/".$result["return"]["uuid"].".xml", "w"); $file_xml = fopen ($conf->facture->dir_output."/".$serie.$guion.$folio."/".$result["return"]["uuid"].".xml", "w"); fwrite($file_xml,utf8_encode($result["return"]["xml"])); fclose($file_xml); // $file_xml_str = $conf->facture->dir_output."/".strtoupper($serie).$guion.$folio."/".$result["return"]["uuid"].".xml"; $file_xml_str = $conf->facture->dir_output."/".$serie.$guion.$folio."/".$result["return"]["uuid"].".xml"; try{ $the_xml = file_get_contents($file_xml_str); $sxe = new SimpleXMLElement($the_xml); $ns = $sxe->getNamespaces(true); $sxe->registerXPathNamespace('t', $ns['cfdi']); foreach ($sxe->xpath('//t:Comprobante') as $tfd) { $noCertificado = "{$tfd['NoCertificado']}"; } }catch(Exception $e){ echo $e->getMessage()."
"; } // $result["return"]["version"]=isset($result["return"]["version"])?$result["return"]["version"]:"3.3"; if($version_cfdi_sat == '' || is_null($version_cfdi_sat)){ $result["return"]["version"] = '3.3'; }else{ if(strcmp($version_cfdi_sat, "4.0") == 0){ $result["return"]["version"] = '4.0'; }else{ $result["return"]["version"] = '3.3'; } } if($cuenta==""){ $cuenta=0; } if(!is_numeric($cuenta)){ $cuenta=0; } //Se crea el SQL de registro del CFDI if(strcmp($version_cfdi_sat, "4.0") == 0){ $insert = " INSERT INTO ".MAIN_DB_PREFIX."cfdimx ( factura_serie, factura_folio, factura_seriefolio, xml, cadena, version, selloCFD, fechaTimbrado, uuid, certificado, sello, certEmisor, cancelado, u4dig, fk_facture, fecha_emision, hora_emision, fecha_timbrado, hora_timbrado, tipo_timbrado, divisa, entity_id, rfc, usocfdi, nombre, codigopostal, regimenfiscal ) VALUES ( '".$serie."', '".$folio."', '".$serie."-".$folio."', '".$db->escape(utf8_decode($result["return"]["xml"]))."', '".$db->escape(utf8_decode($result["return"]["cadenaOrig"]))."', '".utf8_decode($result["return"]["version"])."', '".utf8_decode($result["return"]["selloCFD"])."', '".$result["return"]["fechaTimbrado"]."', '".$result["return"]["uuid"]."', '".utf8_decode($result["return"]["certSAT"])."', '".utf8_decode($result["return"]["selloSAT"])."', '".$noCertificado."', '0', '".$cuenta."', '".$facid."', '".$fecha_emison."', '".$hora_emision."', '".$separa_ftimbrado[0]."', '".$separa_ftimbrado[1]."', '".$modotimb."', '".$moneda."', '".$conf->entity."', '".$receptor["rfc"]."', '".$receptor["usoCFDI"]."', '".$db->escape(utf8_decode($receptor["nombre"]))."', '".$receptor["codigoPostal"]."', '".$receptor["regimenFiscal"]."' ) "; }else{ $insert = " INSERT INTO ".MAIN_DB_PREFIX."cfdimx ( factura_serie, factura_folio, factura_seriefolio, xml, cadena, version, selloCFD, fechaTimbrado, uuid, certificado, sello, certEmisor, cancelado, u4dig, fk_facture, fecha_emision, hora_emision, fecha_timbrado, hora_timbrado, tipo_timbrado, divisa, entity_id ) VALUES ( '".$serie."', '".$folio."', '".$serie."-".$folio."', '".$db->escape(utf8_decode($result["return"]["xml"]))."', '".$db->escape(utf8_decode($result["return"]["cadenaOrig"]))."', '".utf8_decode($result["return"]["version"])."', '".utf8_decode($result["return"]["selloCFD"])."', '".$result["return"]["fechaTimbrado"]."', '".$result["return"]["uuid"]."', '".utf8_decode($result["return"]["certSAT"])."', '".utf8_decode($result["return"]["selloSAT"])."', '".$noCertificado."', '0', '".$cuenta."', '".$facid."', '".$fecha_emison."', '".$hora_emision."', '".$separa_ftimbrado[0]."', '".$separa_ftimbrado[1]."', '".$modotimb."', '".$moneda."', '".$conf->entity."' ) "; } dol_syslog('SQL_Timrbado:'.$insert); $rr = $db->query($insert); if(!$rr){ if(strtoupper($serie) == '' || $folio == ''){ $guion = ""; }else{ $guion = "-"; } if(file_exists($conf->facture->dir_output."/".$serie.$guion.$folio)){}else{ mkdir($conf->facture->dir_output."/".$serie.$guion.$folio,0700); } $file_xml = fopen ($conf->facture->dir_output."/".$serie.$guion.$folio."/".$serie.$guion.$folio."_soporte.txt", "w"); fwrite($file_xml,utf8_encode($insert)); fclose($file_xml); } //if($factura_total_origen!=$header["total"] && $factura_tipo!=2){s if($factura_total_origen != $header["total"] && $factura->type != 2){ if($conf->global->MAIN_MODULE_MULTICURRENCY){ if($header["moneda"]==$conf->currency){ $sqlupd="UPDATE ".MAIN_DB_PREFIX."facture SET multicurrency_total_ttc=".$header["total"].",total_ttc=".$header["total"]." WHERE rowid=".$facid; }else{ $sqlupd="UPDATE ".MAIN_DB_PREFIX."facture SET multicurrency_total_ttc=".$header["total"]." WHERE rowid=".$facid; } $ass=$db->query($sqlupd); }else{ $sqlupd="UPDATE ".MAIN_DB_PREFIX."facture SET total_ttc=".$header["total"]." WHERE rowid=".$facid; $ass=$db->query($sqlupd); } } // Valor para los Listados $sqlupd="UPDATE ".MAIN_DB_PREFIX."facture SET subtype = 1000 WHERE rowid=".$facid; $ass=$db->query($sqlupd); if($factura->type == 2){ $vowels = array(",", "-"); $factura_subtotal=str_replace($vowels, "", $factura_subtotal); if($descheader!=0){$descheader=str_replace($vowels, "", $descheader);} $factura_iva=str_replace($vowels, "", $factura_iva); if($impuestoish!='NO'){$impuestoish=str_replace($vowels, "", $impuestoish);} if($impuestoish2!='NO'){$impuestoish2=str_replace($vowels, "", $impuestoish2);} $factura_total=str_replace($vowels, "", $factura_total); } $cfdi_commit = $result["return"]["rsp"]; if ($rr) { dol_syslog('ANTES:: generaPDF_new.php'); print ''; // print ''; }else { dol_syslog('ANTES:: Retorno CFDI'); print ''; } // if($validar_cce == 'SI'){ // dol_syslog('ANTES:: generaPDF.php'); // include("generaPDF.php"); // print ''; // }else{ // if ($rr) { // dol_syslog('ANTES:: generaPDF_new.php'); // print ''; // // print ''; // }else { // dol_syslog('ANTES:: Retorno CFDI'); // print ''; // } // } }else{ // print '
result
'; print_r($result); print '
'; $msg_cfdi_final = ''; if(strtoupper($serie) == '' || $folio == ''){ $guion = ""; }else{ $guion = "-"; } if(file_exists($conf->facture->dir_output."/".$serie.$guion.$folio)){}else{ mkdir($conf->facture->dir_output."/".$serie.$guion.$folio,0700); } // $file_xml = fopen ($conf->facture->dir_output."/".strtoupper($serie).$guion.$folio."/".strtoupper($serie).$guion.$folio.".xml", "w"); $file_xml = fopen ($conf->facture->dir_output."/".$serie.$guion.$folio."/".$serie.$guion.$folio."_SEF.xml", "w"); fwrite($file_xml,utf8_encode($result["return"]["xml_estructura"])); fclose($file_xml); if($result["return"]["rsp"] != ""){ $msg_cfdi_final .= utf8_encode($result["return"]["rsp"]." - ".$result["return"]["msg"]."

".$result["return"]["msgDetail"]); }else{ $msg_cfdi_final .= "No hubo respuesta para la peticion, intente nuevamente."; } } }else{ // $msg_cfdi_final .= "Error 9001: La factura ".strtoupper($serie)."-".$folio." ya esta asociada con un timbre fiscal."; $msg_cfdi_final .= "Error 9001: La factura ".$serie."-".$folio." ya esta asociada con un timbre fiscal."; } }else{ // $msg_cfdi_final .= "Error 9002: La factura ".strtoupper($serie)."-".$folio." ya esta asociada con un timbre fiscal."; $msg_cfdi_final .= "Error 9002: La factura ".$serie."-".$folio." ya esta asociada con un timbre fiscal."; } // }else{ // if(!$valida_rfc_emisor) // $msg_cfdi_final = "10000 - El RFC del emisor es incorrecto
"; // if(!$valida_rfc_receptor) // $msg_cfdi_final = "10001 - El RFC del receptor es incorrecto"; // } }else{ $msg_cfdi_final .= "Validaciones PAC

"; if($header == null){ $msg_cfdi_final .= "La información del Comprobante esta vacía y es obligatoria.
"; } if($conceptos == null){ $msg_cfdi_final .= "La información de los Conceptos esta vacía y es obligatoria.
"; } if($emisor == null){ $msg_cfdi_final .= "La información del Emisor esta vacía y es obligatoria.
"; } if($receptor == null){ $msg_cfdi_final .= "La información del Receptor (Cliente) esta vacía y es obligatoria.
"; if(strcmp($version_cfdi_sat, "4.0") == 0){ $msg_cfdi_final .= " Para el Timbrado de CFDI 4.0 la información del Receptor (Cliente) se toma de la Pestaña Domicilio Fiscal.

"; } } if($rfc_emisor == null){ $msg_cfdi_final .= "El usuario de Timbrado esta vacío y es obligatorio.
"; } if($passwd_timbrado == null){ $msg_cfdi_final .= "La Contraseña de Timbrado esta vacía y es obligatoria.
"; } if($adicionales == null){ $msg_cfdi_final .= "La información de Adicionales esta vacía y es obligatoria.
"; } if($errores_factura == null){ $msg_cfdi_final .= " "; } if($errores_conceptos == null){ $msg_cfdi_final .= " "; } } ?>