0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) {
$i--; $j--;
}
if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) {
$res = @include substr($tmp, 0, ($i + 1))."/main.inc.php";
}
if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) {
$res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php";
}
// Try main.inc.php using relative path
if (!$res && file_exists("../main.inc.php")) {
$res = @include "../main.inc.php";
}
if (!$res && file_exists("../../main.inc.php")) {
$res = @include "../../main.inc.php";
}
if (!$res && file_exists("../../../main.inc.php")) {
$res = @include "../../../main.inc.php";
}
if (!$res) {
die("Include of main fails");
}
require_once(DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php');
require_once(DOL_DOCUMENT_ROOT."/core/class/html.form.class.php");
require_once(DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php");
require_once(DOL_DOCUMENT_ROOT.'/core/lib/invoice.lib.php');
require_once(DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php');
require_once(DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php');
require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
require_once(DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php');
dol_include_once('/cfdimx/class/societe.class.php');
dol_include_once('/cfdimx/class/pagos.class.php');
dol_include_once('/cfdimx/js/pagos.js.php');
global $db, $conf, $user, $dolibarr_main_url_root, $dolibarr_main_url_root_alt;
$wscfdi = $conf->global->MAIN_MODULE_CFDIMX_WS;
$zona_horaria = $conf->global->CFDIMX_HUSO_HORARIO;
date_default_timezone_set($zona_horaria);
$id = GETPOST('id','int');
$ref = GETPOST('ref', 'alpha');
$action = GETPOST('action');
$langs->load('bills');
$langs->load('cfdimx');
$object = new Paiement($db);
$object->fetch($id, $ref);
$societe_cfdi = new SocieteCFDIMX($db);
$amount_header = $object->amount;
$amount_multi_header = $object->multicurrency_amount;
if($id == ""){
$id = $object->id;
}
$complemento_pagos = new ComplementoPagos($db);
$complemento_pagos->id_doli = $id;
$guardado = $complemento_pagos->validarComplemento();
$validacion_docs_rel = $complemento_pagos->validarDocumentosRel($id);
##Si no esta creado el registro se genera
if($validacion_docs_rel == 0){
if($guardado == 0){
$aux = $complemento_pagos->setInformacionPago($id, $ref);
print '';
}else{
// $aux = $complemento_pagos->setInformacionPago($id, $ref);
}
if($complemento_pagos->id_complemento > 0){
$complemento_pagos->fetch($complemento_pagos->id_complemento, $id);
}
}
/*
* Actions
*/
/********************* INICIA CONFIRM ACTIONS ***********************/
if($action == "confirm_del_cfdi_rel" && GETPOST('confirm') == "yes"){
$res = $complemento_pagos->deleteCFDIRelacionado(GETPOST("rowid_cfdi"));
print "";
}
if ($action == 'confirm_send_facture_mail' && GETPOST('confirm') == "yes") {
// echo "";
// setEventMessage("Espere un momento el sistema se redirecciona al formulario correcto...", 'mesgs');
if(GETPOST('id_factura_seleccionada') > 0){
// print '';
$url = $dolibarr_main_url_root.$dolibarr_main_url_root_alt.'/cfdimx/facture.php?facid='.GETPOST('id_factura_seleccionada').'&action=presend&mode=init#formmailbeforetitle';
print '';
}else{
setEventMessage("Error: Debes Seleccionar una Factura.", 'errors');
$action = "presend";
}
}
if($action == "confirm_cancel" && GETPOST('confirm') == "yes"){
$id = GETPOST('id');
$uuid = GETPOST('uuid');
$rfc = GETPOST('rfc');
$motivo = GETPOST('motivo');
$foliosustitucion = (GETPOST("uuid_sustitucion") != '' ? trim(GETPOST("uuid_sustitucion")) : '');
// Nuevo Esquema de Cancelación 2022
$datos = array(
"timbrado_usuario" => $rfc,
"timbrado_password" => $complemento_pagos->conf_ws["pass_timbrado"],
"uuid" => $uuid,
"motivo" => $motivo,
"foliosustitucion" => $foliosustitucion
);
if($motivo != "" && $motivo != -1){
$validacion = 1;
if($motivo == "01"){
$validacion = ($motivo == "01" && $foliosustitucion != "" ? 1 : 0);
}
if($validacion == 1){
$client = new nusoap_client($wscfdi, 'wsdl');
$resultado = $client->call("cancelar", $datos);
if($conf->global->CFDIMX_PAGOS_DEBUG_TIMBRADO == 1){
print '
Datos '; print_r($datos); print ' ';
print 'Resultado '; print_r($resultado); print ' ';
}
if($resultado["return"] != ""){
if($resultado["return"]["httpStatusCode"] == 200){
//Se guarda el acuse de cancelación en un archivo
if(file_exists($conf->facture->dir_output."/".$object->ref)){
}else{
mkdir($conf->facture->dir_output."/".$object->ref,0700);
}
$fecha = date("Y-m-d")."_".date("H-i-s");
$archivo_acuse = "acuse_cancelacion_pago_".$fecha."_".$uuid.".xml";
$nombre_file_acuse = $conf->facture->dir_output."/".$object->ref."/".$archivo_acuse;
$file_acuse = fopen ($nombre_file_acuse, "w");
fwrite($file_acuse,utf8_encode($resultado["return"]["acuse"]));
fclose($file_acuse);
#Inicio para guardar la respuesta a la solicitud de Cancelacion
$sql_solicitud_canceacion = "";
$sql_solicitud_canceacion .= "INSERT INTO ".MAIN_DB_PREFIX."cfdimx_solicitud_cancelacion_pagos";
$sql_solicitud_canceacion .= " (fk_pago, httpStatusCode, acuse, status, uuid, uuidStatusCode, message, messageDetail, fecha, hora, archivo)";
$sql_solicitud_canceacion .= " VALUES";
$sql_solicitud_canceacion .= " (";
$sql_solicitud_canceacion .= "'.$id.',";
$sql_solicitud_canceacion .= "'".$db->escape(utf8_decode($resultado["return"]["httpStatusCode"]))."',";
$sql_solicitud_canceacion .= "'".$db->escape(utf8_decode($resultado["return"]["acuse"]))."',";
$sql_solicitud_canceacion .= "'".$db->escape(utf8_decode($resultado["return"]["status"]))."',";
$sql_solicitud_canceacion .= "'".$db->escape(utf8_decode($resultado["return"]["uuid"]))."',";
$sql_solicitud_canceacion .= "'".$db->escape(utf8_decode($resultado["return"]["uuidStatusCode"]))."',";
$sql_solicitud_canceacion .= "'".$db->escape(utf8_decode($resultado["return"]["message"]))."',";
$sql_solicitud_canceacion .= "'".$db->escape(utf8_decode($resultado["return"]["messageDetail"]))."',";
$sql_solicitud_canceacion .= " now(), now(),";
$sql_solicitud_canceacion .= "'".$db->escape(utf8_decode($archivo_acuse))."'";
$sql_solicitud_canceacion .= " )";
// print $sql_solicitud_canceacion;
$res_solicitud_canceacion = $db->query($sql_solicitud_canceacion);
#Termina para guardar la respuesta a la solicitud de Cancelacion
print '';
}else{
$msg_cfdi_final = "Error al Cancelar El Complemento de Pagos ";
if($resultado["return"]["message"] != "")
$msg_cfdi_final .= $resultado["return"]["message"]." ";
if($resultado["return"]["messageDetail"] != "")
$msg_cfdi_final .= $resultado["return"]["messageDetail"];
print '';
}
}else{
$msg_cfdi_final = "No hay respuesta para la cancelación con el SAT, favor de intentar mas tarde.";
print '';
}
}else{
$msg_cfdi_final = "Error 9001: El Folio de Sustitución esta vacío y es requerido cuando el Motivo es 01 - Comprobantes emitidos con errores con relación.";
print '';
}
}else{
$msg_cfdi_final = "Error 9002: El Motivo de Cancelación es obligatorio.";
print '';
}
}
if ($action == "confirm_estatus" && GETPOST('confirm') == "yes") {
$sql_verificar_estatus = "";
$sql_verificar_estatus = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_estatus";
$sql_verificar_estatus .= " WHERE uuid = '".$_REQUEST['uuid_c']."'";
$sql_verificar_estatus .= " AND entity = ".$conf->entity;
$res_verificar_estatus = $db->query($sql_verificar_estatus);
$num_verificar_estatus = $db->num_rows($res_verificar_estatus);
$datos = array(
"rfc_emisor" => $_REQUEST['emisor'],
"rfc_receptor" => $_REQUEST['receptor'],
"total" => 0,
"uuid" => $_REQUEST['uuid_c']
);
$client = new nusoap_client($wscfdi, 'wsdl');
$result_status_factura = $client->call('getStatusFactura', $datos);
$escancelable = $result_status_factura["return"]["esCancelable"];
if($result_status_factura["return"]["estatusCancelacion"] != "" && !is_null($result_status_factura["return"]["estatusCancelacion"])){
$escancelable = $result_status_factura["return"]["estatusCancelacion"];
}
if($num_verificar_estatus > 0){
$obj_verificar_estatus = $db->fetch_object($res_verificar_estatus);
$update_estatus = "";
$update_estatus = "UPDATE ".MAIN_DB_PREFIX."cfdimx_estatus";
$update_estatus .= " SET ";
$update_estatus .= " estado = '".$db->escape(utf8_decode($result_status_factura["return"]["estado"]))."',";
$update_estatus .= " escancelable = '".$db->escape(utf8_decode($escancelable))."',";
$update_estatus .= " message = '".$db->escape(utf8_decode($result_status_factura["return"]["message"]))."',";
$update_estatus .= " fk_user = '".$user->id."',";
$update_estatus .= " fecha = now(), hora = now()";
$update_estatus .= " WHERE rowid = ".$obj_verificar_estatus->rowid;
if($obj_verificar_estatus->rowid > 0){
$res_update = $db->query($update_estatus);
print '';
}
}else{
$estado_cfdi = $result_status_factura["return"]["estado"];
$estatus_cancelacion = $escancelable;
$sql_insert = "";
$sql_insert .= " INSERT INTO ".MAIN_DB_PREFIX."cfdimx_estatus";
$sql_insert .= " (";
$sql_insert .= " uuid, facid, entity, estado, escancelable, message, fk_user, fecha, hora";
$sql_insert .= " )";
$sql_insert .= " VALUES";
$sql_insert .= " (";
$sql_insert .= "'".$_REQUEST['uuid_c']."',";
$sql_insert .= " 0,";
$sql_insert .= "'".$conf->entity."',";
$sql_insert .= "'".$db->escape(utf8_decode($result_status_factura["return"]["estado"]))."',";
$sql_insert .= "'".$db->escape(utf8_decode($escancelable))."',";
$sql_insert .= "'".$db->escape(utf8_decode($result_status_factura["return"]["message"]))."',";
$sql_insert .= "'".$user->id."',";
$sql_insert .= " now(), now()";
$sql_insert .= " )";
$res_insert = $db->query($sql_insert);
print '';
}
}
if($action == "confirm_clasificar_pago" && GETPOST('confirm') == "yes"){
$nota = (GETPOST('close_note') != '' ? trim(GETPOST('close_note')) : 'Complemento de pago cancelado');
$sql_cancela_pago = "UPDATE ".MAIN_DB_PREFIX."paiement SET note='".$nota."' WHERE rowid = ".$id;
// print $sql_cancela_pago.' ';
$res_cancela_pago = $db->query($sql_cancela_pago);
$sql_cancela_rec_pago = "UPDATE ".MAIN_DB_PREFIX."cfdimx_recepcion_pagos SET cancelado = 1 WHERE fk_paiement = ".$id;
// print $sql_cancela_rec_pago.' ';
$res_cancela_rec_pago = $db->query( $sql_cancela_rec_pago);
print '';
}
if($action == "add_doc_rel"){
$pago_static = new ComplementoPagos($db);
$pago_static->id_doli = GETPOST("lista_pagos");
$pago_static->fetch(0, $pago_static->id_doli);
$complemento_pagos->datos_complemento["tipo_relacion"] = GETPOST("tipo_relacion");
$complemento_pagos->cfdi_relacionado["fk_pago_rel"] = GETPOST("lista_pagos");
$complemento_pagos->cfdi_relacionado["uuid"] = $pago_static->datos_complemento["uuid"];
$res = $complemento_pagos->createCFDIRelacionado();
if($res == 0){
// setEventMessage("Se agrego el CFDI Relacionado (".$complemento_pagos->cfdi_relacionado["uuid"].").", 'mesgs');
// setEventMessage($complemento_pagos->mensaje_error, 'mesgs');
}else{
// setEventMessage($complemento_pagos->mensaje_error, 'errors');
}
$_SESSION["msg_ayuda_add_cfdi"] = $complemento_pagos->mensaje_error;
print "";
}
if($action == "save_info_pago"){
$complemento_pagos->datos_complemento["fk_facture"] = 0;
$complemento_pagos->datos_complemento["fecha_pago"] = GETPOST("fecha_pago")." ".GETPOST("hora_pago");
$complemento_pagos->datos_complemento["forma_pago"] = trim(GETPOST("forma_pago"));
$complemento_pagos->datos_complemento["moneda"] = trim(GETPOST("moneda"));
$complemento_pagos->datos_complemento["tipo_cambio"] = trim(GETPOST("tipocambio"));
$complemento_pagos->datos_complemento["monto"] = trim(GETPOST("monto"));
$complemento_pagos->datos_complemento["numero_operacion"] = trim(GETPOST("numero_operacion"));
$complemento_pagos->datos_complemento["rfc_cta_ordenante"] = trim(GETPOST("rfc_cta_ordenante"));
$complemento_pagos->datos_complemento["nom_banco_ordenante"] = trim(GETPOST("nom_banco_ordenante"));
$complemento_pagos->datos_complemento["cta_ordenante"] = trim(GETPOST("cta_ordenante"));
$complemento_pagos->datos_complemento["rfc_cta_beneficiario"] = trim(GETPOST("rfc_cta_beneficiario"));
$complemento_pagos->datos_complemento["cta_beneficiario"] = trim(GETPOST("cta_beneficiario"));
$complemento_pagos->datos_complemento["tipo_cadena_pago"] = trim(GETPOST("tipo_cadena_pago"));
$complemento_pagos->datos_complemento["certificado_pago"] = trim(GETPOST("certificado_pago"));
$complemento_pagos->datos_complemento["cadena_original_comprobante_pago"] = trim(GETPOST("cadena_original_comprobante_pago"));
$complemento_pagos->datos_complemento["sello_pago"] = trim(GETPOST("sello_pago"));
$res = $complemento_pagos->update();
print "";
}
if($action == "save_doc_rel"){
$complemento_pagos->doc_relacionado["rowid"] = GETPOST("rowid_doc_rel");
$complemento_pagos->doc_relacionado["uuid"] = GETPOST("uuid");
$complemento_pagos->doc_relacionado["moneda"] = GETPOST("moneda");
$complemento_pagos->doc_relacionado["tipo_cambio"] = GETPOST("tipo_cambio");
$complemento_pagos->doc_relacionado["parcialidad"] = GETPOST("parcialidad");
$complemento_pagos->doc_relacionado["importe_anterior"] = GETPOST("importe_anterior");
$complemento_pagos->doc_relacionado["importe_pagado"] = GETPOST("importe_pagado");
$complemento_pagos->doc_relacionado["importe_insoluto"] = GETPOST("importe_insoluto");
if(strcmp($conf->global->CFDIMX_VERSION_SAT, "4.0") == 0){
$complemento_pagos->doc_relacionado["equivalencia"] = GETPOST("equivalencia");
// "impuestos" => array()
if(!is_null(GETPOST("base")) && is_array(GETPOST("base")) && count(GETPOST("base")) > 0){
foreach (GETPOST("base") as $key => $value) {
// print 'key :: '.$key.' ';
// print_r($value);
// print ' ';
$complemento_pagos->doc_relacionado["impuestos"][] = array(
"rowid" => GETPOST("rowid_impuesto")[$key],
"tipo" => GETPOST("tipo".$key),
"base" => GETPOST("base")[$key],
"impuesto" => GETPOST("impuesto")[$key],
"tipo_factor" => GETPOST("tipo_factor")[$key],
"tasa_o_cuota" => GETPOST("tasa_o_cuota")[$key],
"importe" => GETPOST("importe")[$key]
);
}
}
}else{
$complemento_pagos->doc_relacionado["metodo_pago"] = GETPOST("metodo_pago");
}
$res = $complemento_pagos->updateDocumentoRel();
print "";
}
if($action == "del_info_pago"){
$sql1="SELECT rowid FROM ".MAIN_DB_PREFIX."cfdimx_recepcion_pagos WHERE fk_facture=0 AND fk_paiement=".$id." AND entity=".$conf->entity;
$resq=$db->query($sql1);
$resultado=$db->fetch_object($resq);
$del_head_pago = "DELETE FROM ".MAIN_DB_PREFIX."cfdimx_recepcion_pagos";
$del_head_pago .= " WHERE rowid =".$resultado->rowid;
$res_del_head_pago = $db->query($del_head_pago);
$del_pago_rel_fac = "DELETE FROM ".MAIN_DB_PREFIX."cfdimx_recepcion_pagos_relacion_facturas";
$del_pago_rel_fac .= " WHERE fk_relacion_pagos =".$resultado->rowid;
$res_del_pago_rel_fac = $db->query($del_pago_rel_fac);
$del_docto_rel = "DELETE FROM ".MAIN_DB_PREFIX."cfdimx_recepcion_pagos_docto_relacionado";
$del_docto_rel .= " WHERE fk_recepago=".$resultado->rowid;
$res_del_docto_rel = $db->query($del_docto_rel);
$del_impuestos_pago = "DELETE FROM ".MAIN_DB_PREFIX."cfdimx_pagos_impuestos";
$del_impuestos_pago .= " WHERE fk_pago=".$id;
$res_impuestos_pago = $db->query($del_impuestos_pago);
$del_uuid_rel = "DELETE FROM ".MAIN_DB_PREFIX."cfdimx_cfdi_relacionados_pagos";
$del_uuid_rel .= " WHERE fk_pago=".$id;
$res_del_uuid_rel = $db->query($del_uuid_rel);
print "";
}
if(!is_null(GETPOST("msg_add_cfdi")) && GETPOST("msg_add_cfdi") != "" && in_array((int)GETPOST("msg_add_cfdi"), array(0, 1))){
if(GETPOST("msg_add_cfdi") == 0){
setEventMessage($_SESSION["msg_ayuda_add_cfdi"], 'mesgs');
}else{
setEventMessage($_SESSION["msg_ayuda_add_cfdi"], 'errors');
}
}
if(!is_null(GETPOST("msg_dl_cfdi")) && GETPOST("msg_dl_cfdi") != "" && in_array((int)GETPOST("msg_dl_cfdi"), array(0, 1))){
if(GETPOST("msg_dl_cfdi") == 1){
setEventMessage("Se elimino correctamente el CFDI Relacionado seleccionado.", 'mesgs');
}else{
setEventMessage("Error: No se elimino correctamente el CFDI Relacionado seleccionado.", 'errors');
}
}
if(!is_null(GETPOST("msg_update_pago")) && GETPOST("msg_update_pago") != "" && in_array((int)GETPOST("msg_update_pago"), array(0, 1))){
if(GETPOST("msg_update_pago") == 1){
setEventMessage("Se actualizo correctamente la Información del Pago.", 'mesgs');
}else{
setEventMessage("Error: No se actualizo correctamente la Información del Pago.", 'errors');
}
}
if(!is_null(GETPOST("msg_update_doc_rel")) && GETPOST("msg_update_doc_rel") != "" && in_array((int)GETPOST("msg_update_doc_rel"), array(0, 1))){
if(GETPOST("msg_update_doc_rel") == 1){
setEventMessage("Se actualizo correctamente la Información del Documento Relacionado.", 'mesgs');
}else{
setEventMessage("Error: No se actualizo correctamente la Información del Documento Relacionado.", 'errors');
}
}
if (GETPOST("msgerr") == 1 && $_SESSION["errorCFDIP"] != "") {
// dol_htmloutput_errors($_SESSION["errorCFDIP"]);
setEventMessage($_SESSION["errorCFDIP"], 'errors');
$_SESSION["errorCFDIP"] = "";
if($conf->global->CFDIMX_DEBUG_TIMBRADO == 1){
$complemento_pagos->log($object->ref);
print 'header '; print_r($_SESSION['header']); print ' ';
print 'conceptos '; print_r($_SESSION['conceptos']); print ' ';
print 'emisor '; print_r($_SESSION['emisor']); print ' ';
print 'receptor '; print_r($_SESSION['receptor']); print ' ';
print 'rfc_emisor '; print_r($_SESSION['rfc_emisor']); print ' ';
print 'passwd_timbrado '; print_r($_SESSION['passwd_timbrado']); print ' ';
print 'adicionales '; print_r($_SESSION['adicionales']); print ' ';
print 'resultado '; print_r($_SESSION['resultado']); print ' ';
}
}
if(GETPOST('commit') == 1){
setEventMessage("Complemento de Pago Timbrado correctamente.", 'mesgs');
}
if(!is_null(GETPOST("msg_preview_pdf")) && GETPOST("msg_preview_pdf") != "" && in_array((int)GETPOST("msg_preview_pdf"), array(0, 1))){
setEventMessage("PDF Previo generado correctamente.", 'mesgs');
}
if(!is_null(GETPOST("msg_regen_pdf")) && GETPOST("msg_regen_pdf") != "" && in_array((int)GETPOST("msg_regen_pdf"), array(0, 1))){
setEventMessage("PDF Regenerado correctamente.", 'mesgs');
}
if ($action == 'success_pago_clasificado') {
setEventMessage("Complemento de pago Clasificado como Cancelado correctamente.", 'mesgs');
}
if ($action == 'success_msg') {
setEventMessage("Complemento de pago cancelado correctamente.", 'mesgs');
}
if ($action == 'error_msg') {
$msg_error = GETPOST('msg');
setEventMessage($msg_error, 'errors');
}
if(GETPOST('reinicio_pago') == 1){
setEventMessage("Se elimino correctamente la Información del Pago.", 'mesgs');
}
if($conf->global->CFDIMX_ALERTA_TIMBRES == 1){
if($complemento_pagos->folios["disponibles"] <= $conf->global->CFDIMX_MIN_TIMBRES){
$url_config = 'Configuración ';
print '';
print ' ';
print ' ';
print 'Alerta de Timbres';
print ' ';
if($complemento_pagos->folios["disponibles"] == $conf->global->CFDIMX_MIN_TIMBRES){
print 'Actualmente tienes '.$complemento_pagos->folios["disponibles"].' folios disponibles que es la cantidad ('.$conf->global->CFDIMX_MIN_TIMBRES.') minima establecida en la '.$url_config.'.';
}else{
print 'Actualmente tienes '.$complemento_pagos->folios["disponibles"].' folios disponibles que es la cantidad ('.$conf->global->CFDIMX_MIN_TIMBRES.') minima por debajo de la establecida en la '.$url_config.'.';
}
print ' ';
print 'Contacta a tu Proveedor de Timbres para adquirir más.';
print '
';
}
}
/********************* TERMINA CONFIRM ACTIONS ***********************/
/*
* View
*
* Put here all code to build page
*/
$form = new Form($db);
$formconfirm = '';
// $arrayofjs = array('/cfdimx/js/paiement.js.php');
llxHeader('', $object->ref.' - Complemento de Pago 2.0');
/********************* INICIA VIEW ************************/
$head = payment_prepare_head($object);
print dol_get_fiche_head($head, 'tabcomplementopago', $langs->trans("PaymentCustomerInvoice"), -1, 'payment');
$linkback = ''.$langs->trans("BackToList").' ';
dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', '');
$formconfirm = '';
if($action == "del_cfdi_rel"){
$id = GETPOST('id') != "" ? GETPOST('id') : 0;
$titulo = "";
$pregunta = "¿Desea eliminar el CFDI Relacionado seleccionado?";
$formquestion = array(
array('type' => 'hidden', 'name' => 'rowid_cfdi', 'value' => GETPOST("rowid_cfdi"))
);
$formconfirm = $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$id, $pregunta, '', 'confirm_del_cfdi_rel', $formquestion, 0, 1, 220, 450);
}
if ($action == 'presend') {
$titulo_head = $langs->trans('Pago asociado a varias facturas');
$form_questions = array(
array('type'=> 'select', 'name'=> 'id_factura_seleccionada', 'values'=> $complemento_pagos->lista_facturas_correo, 'label' => "Factura", 'select_show_empty' => 0)
);
$formconfirm = $form->formconfirm($_SERVER['PHP_SELF'].'?id='.GETPOST('id'), $titulo_head, "", 'confirm_send_facture_mail', $form_questions, 0, 1, 200, 550);
}
if ($action == "cancel"){
$id = GETPOST('id') != "" ? GETPOST('id') : GETPOST('facid');
$uuid = GETPOST('uuid');
$rfc_emisor = GETPOST('rfc_emisor');
$text="¿Está seguro que desea cancelar este complemento de pago?";
$lista_motivos = array(
'-1' => 'Selecciona el Motivo de Cancelación ',
'01' => '01 - Comprobantes emitidos con errores con relación.',
'02' => '02 - Comprobantes emitidos con errores sin relación.',
'03' => '03 - No se llevó a cabo la operación.',
'04' => '04 - Operación nominativa relacionada en una factura global.'
);
$titulo = "El Folio de Sustitución es obligatorio cuando el motivo es 01 . ";
$titulo .= "Nota: Se considera una solicitud de cancelación exitosa cuando regresa un valor de 200, sin embargo esto no asegura su cancelación.";
$pregunta = "¿Desea enviar la solicitud de Cancelación de este Complemento de Pagos?";
$formquestion = array(
array('type' => 'hidden', 'name' => 'uuid_cancelar', 'id'=>'uuid_cancelar', 'value' => GETPOST("uuid")),
array('type' => 'hidden', 'name' => 'action', 'value' => 'confirm_cancel'),
array('type' => 'select', 'name' => 'motivo', 'label' => 'Motivo', 'values' => $lista_motivos, 'select_show_empty' => 0),
array('type' => 'text', 'name' => 'uuid_sustitucion', 'id'=>'uuid_sustitucion', 'label' =>'Folio de Sustitución', 'moreattr' => 'placeholder="d0645efd-4abb-4c24-a0d7-7986e82cfedf"', 'size' => 35),
array('type' => 'onecolumn', 'value' => $titulo)
);
$formconfirm = $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$id.'&uuid='.$uuid.'&rfc='.$rfc_emisor, $pregunta, '', 'confirm_cancel', $formquestion, 0, 1, 320, 650);
}
if($action == "clasificar_pago"){
$titulo_head = "Clasificar Complemento de Pago";
$pregunta = "¿Desea cancelar el Complemento de Pago ".$object->ref." ?";
$formquestion = array(
array('type' => 'onecolumn', 'value' => '¿Desea cancelar el Complemento de Pago '.$object->ref.' ?'),
array('type' => 'onecolumn', 'value' => ' '),
array('type' => 'text', 'name' => 'close_note', 'label' => $langs->trans("Comment"), 'value' => 'Complemento de Pago Cancelado', 'morecss' => 'minwidth300')
// array('type' => 'hidden', 'name' => 'action', 'id' => 'action', 'value' => 'confirm_clasificar_pago')
);
$formconfirm = $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$id, $titulo_head, '', 'confirm_clasificar_pago', $formquestion, "yes", 1, 200, 500);
}
if ($action == 'consultar_estatus') {
$factura_tmp = new Facture($db);
$factura_tmp->fetch($id);
$pago = new Paiement($db);
$pago->fetch($id);
$amount_header = $pago->amount;
if($conf->global->MAIN_MODULE_MULTICURRENCY){
if($pago->amount > $pago->multicurrency_amount){
$amount_header = $pago->multicurrency_amount;
}
}
$sql = "SELECT * FROM ".MAIN_DB_PREFIX."cfdimx_recepcion_pagos WHERE fk_facture = 0 AND fk_paiement=".$_REQUEST['id'];
$req = $db->query($sql);
$uuid_consulta = "";
$nmr = $db->num_rows($req);
if($nmr>0){
$val = $db->fetch_object($req);
if($val->uuid!=NULL && $val->uuid!=null && trim($val->uuid)!=""){
$uuid_consulta=$val->uuid;
}
}
$pagos_busqueda = new ComplementoPagos($db);
$obj_pagos_info = $pagos_busqueda->getDatosXML($pago->ref, $uuid_consulta);
$titulo = "Consultar Estatus CFDI";
$emisor = "Emisor: ".$obj_pagos_info["emisor_rfc"];
$receptor = "Receptor: ".$obj_pagos_info["receptor_rfc"];
$factura = "Pago: ".$pago->ref;
$uuid = "UUID: ".$uuid_consulta;
$total = "Total: ".number_format($amount_header, 2);
$pregunta = "¿Son correctos los Datos para la Consulta del Estatus del Complemento de Pagos?";
$formquestion = array(
array('type' => 'onecolumn', 'value' => $emisor),
array('type' => 'hidden', 'name' => 'emisor', 'value' => $obj_pagos_info["emisor_rfc"]),
array('type' => 'onecolumn', 'value' => $receptor),
array('type' => 'hidden', 'name' => 'receptor', 'value' => $obj_pagos_info["receptor_rfc"]),
array('type' => 'onecolumn', 'value' => $factura),
array('type' => 'onecolumn', 'value' => $uuid),
array('type' => 'hidden', 'name' => 'uuid_c', 'value' => $uuid_consulta),
array('type' => 'onecolumn', 'value' => $total),
array('type' => 'hidden', 'name' => 'total', 'value' => number_format($amount_header, 2)),
array('type' => 'hidden', 'name' => 'action_post', 'value' => 'confirm_estatus'),
array('type' => 'onecolumn', 'value' => $pregunta)
);
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $id, $titulo, '', 'confirm_estatus', $formquestion, 0, 1, 320, 600);
if($obj_pagos_info == null) {
$msg_error = "Error 9001: No se encontró la información para la Consulta del Complemento.";
setEventMessage($msg_error, 'errors');
}
}
print $formconfirm;
if($validacion_docs_rel == 0){
##Inicia Datos del Pago / Datos Bancarios
// print dol_fiche_head();
print ' ';
print '';
print '
';
print '
';
print '';
print '';
print ' ';
print 'Datos del Pago ';
print ' ';
print ' ';
// Date payment
print '';
print ''.$langs->trans("Date").' ';
print '';
print $form->editfieldval("Date", 'datep', $object->date, $object, $user->rights->facture->paiement, 'datehourpicker', '', null, $langs->trans('PaymentDateUpdateSucceeded'));
print ' ';
print ' ';
// Amount
$amount_header = $object->amount;
$amount_multi_header = $object->multicurrency_amount;
$moneda_header = "";
print '';
print ''.$langs->trans('Amount').' ';
print ''.price($amount_header,0,'',1,-1,-1,$conf->currency).' ';
print ' ';
print '';
print 'Uso CFDI ';
print '';
print $complemento_pagos->obtener_catalogo($conf->global->CFDIMX_USOCFDI_PAGOS, 'usocfdi', 1, 1);
if($conf->global->CFDIMX_USOCFDI_PAGOS == -1){
print '';
print '
';
print '
';
print 'Es necesario configurar el Uso CFDI, ';
print 'da click aquí para configurarlo.';
print ' ';
print '
';
}
print ' ';
print ' ';
print '';
print 'Estatus ';
print '';
if($complemento_pagos->status_cdfi == 0){
print 'Borrador ';
}elseif($complemento_pagos->status_cdfi == 1){
print 'Timbrado ';
}elseif($complemento_pagos->status_cdfi == 2){
print 'Cancelado ';
}
print ' ';
print ' ';
if($complemento_pagos->status_cdfi == 2 && !is_null($object->note) && $object->note != ""){
print '';
print ''.$langs->trans("Comment").' ';
print '';
print $object->note;
print ' ';
print ' ';
}
if(!is_null($complemento_pagos->datos_complemento["uuid"]) && $complemento_pagos->datos_complemento["uuid"] != ""){
print '';
print 'Códgio QR ';
print '';
$societe_cfdi->getDatosXML($object->ref, $complemento_pagos->datos_complemento["uuid"], 1);
$ruta = $object->ref.'/Pago_'.$complemento_pagos->datos_complemento["uuid"].'.png';
$titulo = "Consultar el Estatus del Pago (".$complemento_pagos->datos_complemento["uuid"].") en el Portal del SAT.";
$url_sat = 'https://verificacfdi.facturaelectronica.sat.gob.mx/default.aspx?id='.$complemento_pagos->datos_complemento["uuid"].'&re='.$societe_cfdi->datos_xml["emisor_rfc"].'&rr='.$societe_cfdi->datos_xml["receptor_rfc"].'&tt=0&fe='.substr($complemento_pagos->datos_complemento["selloCFD"],-8);
print '';
print ' ';
print ' ';
print ' ';
print ' ';
}
print '
';
print '
';
print '
';
print '
';
$disable_delete = 0;
// Bank account
if (! empty($conf->banque->enabled)){
if ($object->fk_account > 0){
$bankline=new AccountLine($db);
$bankline->fetch($object->bank_line);
print '';
print '';
print ' ';
print 'Datos Bancarios ';
print ' ';
print ' ';
print '';
print ''.$langs->trans('BankAccount').' ';
print '';
$accountstatic=new Account($db);
$accountstatic->fetch($bankline->fk_account);
print $accountstatic->getNomUrl(1);
print ' ';
print ' ';
print '';
print ''.$langs->trans('BankTransactionLine').' ';
print '';
print $bankline->getNomUrl(1,0,'showconciliated');
print ' ';
print ' ';
}
}
print '
';
print '
';
print '
';
##Termina Datos del Pago / Datos Bancarios
##Inicia CFDI Relacionados
if($conf->global->CFDIMX_PAGOS_CFDI_REL == 1){
if($complemento_pagos->status_cdfi == 0){
print '';
}
if(!is_null($complemento_pagos->lista_cfdi_relacionados) && count($complemento_pagos->lista_cfdi_relacionados) > 0){
print '';
print '
';
if($complemento_pagos->status_cdfi != 0){
print '';
print 'Tipo de Relación ';
print '';
print $complemento_pagos->obtener_rel_pagos($complemento_pagos->datos_complemento["tipo_relacion"], 'tipo_relacion', 1, 1);
print ' ';
print ' ';
}
print '';
print '';
print ' ';
print 'Lista de CFDI Relacionados ';
print ' ';
print ' ';
print '';
print '# ';
print 'Pago ';
print 'UUID ';
if($complemento_pagos->status_cdfi == 0){
print ' ';
}
print ' ';
foreach ($complemento_pagos->lista_cfdi_relacionados as $key => $value) {
$pago_static = new Paiement($db);
$pago_static->fetch($value->fk_pago_rel);
print '';
print ''.($key + 1).' ';
print '';
print $pago_static->getNomUrl(1);
print ' ';
print '';
print $value->uuid;
print ' ';
if($complemento_pagos->status_cdfi == 0){
print '';
$url_rel = $_SERVER["PHP_SELF"].'?id='.$id.'&action=del_cfdi_rel&rowid_cfdi='.$value->rowid;
if((int)DOL_VERSION > 15){
$url_rel .= "&token=".newToken();
}
print '';
print ' ';
print ' ';
print ' ';
}
print ' ';
}
print '
';
print '
';
}
}
##Termina CFDI Relacionados
##Inicia Informacion del Pago
print '';
print '
';
print '
';
print '
';
##Termina Informacion del Pago
// $conf->global->CFDIMX_VERSION_SAT = 9;
##Inicia Documentos Relacionados
if(!is_null($complemento_pagos->lista_doc_relacionados) && count($complemento_pagos->lista_doc_relacionados) > 0){
print '';
print '
';
print '
';
if($action == "edit_doc_rel"){
if((int)DOL_VERSION > 15){
print ' ';
}
print ' ';
print ' ';
}
print '';
print '';
print '';
print ' ';
print 'Documentos Relacionados ('.count($complemento_pagos->lista_doc_relacionados).')';
print ' ';
print ' ';
print '';
print ' ';
print ' ';
print 'Importe ';
print ' ';
print ' ';
print '';
print '# ';
print 'Factura ';
print 'Parcialidad ';
print 'Anterior ';
print 'Pagado ';
print 'Insoluto ';
if(strcmp($conf->global->CFDIMX_VERSION_SAT, "4.0") == 0){
print 'Equivalencia ';
print 'Impuestos ';
}
print ' ';
print ' ';
$num_reg = 1;
foreach ($complemento_pagos->lista_doc_relacionados as $key => $value) {
$factura_static = new Facture($db);
$factura_static->fetch($value->fk_facture);
$form_static = new Form($db);
if(strcmp($conf->global->CFDIMX_VERSION_SAT, "4.0") == 0){
$impuestos = "";
if(!is_null($value->impuestos) && count($value->impuestos) > 0){
$impuestos .='';
}else{
$impuestos .= '';
$impuestos .= 'Sin Impuestos';
$impuestos .= '
';
}
}
print '';
print ''.$num_reg.' ';
print '';
print ''.$factura_static->getNomUrl(1).' ';
if($action == "edit_doc_rel" && $value->rowid == GETPOST("rowid_doc_rel")){
print 'UUID: ';
print 'Moneda: ';
if(strcmp($conf->global->CFDIMX_VERSION_SAT, "4.0") == 0){
}else{
print 'Método de Pago: ';
}
print 'Tipo de Cambio: ';
}else{
if(!is_null($value->idDocumento) && $value->idDocumento != ""){
print 'UUID: '.$value->idDocumento.' ';
}
if(!is_null($value->monedaDR) && $value->monedaDR != ""){
print 'Moneda: '.$value->monedaDR.' ';
}
if(strcmp($conf->global->CFDIMX_VERSION_SAT, "4.0") == 0){
}else{
if(!is_null($value->metodoDePagoDR) && $value->metodoDePagoDR != ""){
print 'Método de Pago: '.$value->metodoDePagoDR.' ';
}
}
if(!is_null($value->tipoCambioDR) && $value->tipoCambioDR != ""){
print 'Tipo de Cambio: '.$value->tipoCambioDR.' ';
}
}
print ' ';
print '';
if($action == "edit_doc_rel" && $value->rowid == GETPOST("rowid_doc_rel")){
print ' ';
}else{
print $value->numParcialidad;
}
print ' ';
print '';
if($action == "edit_doc_rel" && $value->rowid == GETPOST("rowid_doc_rel")){
print ' ';
}else{
print $value->impSaldoAnt;
}
print ' ';
print '';
if($action == "edit_doc_rel" && $value->rowid == GETPOST("rowid_doc_rel")){
print ' ';
}else{
print $value->impPagado;
}
print ' ';
print '';
if($action == "edit_doc_rel" && $value->rowid == GETPOST("rowid_doc_rel")){
print ' ';
}else{
print $value->impSaldoInsoluto;
}
print ' ';
if(strcmp($conf->global->CFDIMX_VERSION_SAT, "4.0") == 0){
print '';
if($action == "edit_doc_rel" && $value->rowid == GETPOST("rowid_doc_rel")){
print ' ';
}else{
print $value->equivalencia;
}
print ' ';
print '';
if($action == "edit_doc_rel" && $value->rowid == GETPOST("rowid_doc_rel")){
print $impuestos;
}else{
print $form_static->textwithpicto('', $impuestos, 1, 'list','', 0, 0, '');
}
print ' ';
}
if($complemento_pagos->status_cdfi == 0){
print '';
if($action == "edit_doc_rel" && $value->rowid == GETPOST("rowid_doc_rel")){
print ' ';
}else{
print 'rowid.'">';
print ' ';
print ' ';
}
print ' ';
}else{
print ' ';
}
print ' ';
$num_reg++;
}
print '
';
print ' ';
print '
';
}
##Termina Documentos Relacionados
// $complemento_pagos->getArchivosVinculados($id);
##Inicia Archivos Vinculados , Estatus Complemento y botones de acciones
print '';
print '';
print '
';
print '
';
#Datos de timbrado
if((int)DOL_VERSION == 10){
print '';
print '';
print ' ';
print 'Datos de Timbrado ';
print ' ';
print ' ';
}else{
print '';
print '';
print ' ';
print 'Datos de Timbrado ';
print ' ';
print ' ';
}
print '';
print '';
print '';
if($complemento_pagos->status_cdfi == 0){
print '';
print 'Estado CFDI ';
print 'Sin Timbrar ';
print ' ';
}else{
if($complemento_pagos->info_estatus["registro"] > 0){
print '';
print 'Estado CFDI ';
print ''.$complemento_pagos->info_estatus["estado_cfdi"].' ';
print ' ';
print '';
print 'Estatus de cancelación ';
print ''.$complemento_pagos->info_estatus["estatus_cancelacion"].' ';
print ' ';
$titulo_consulta = "Consultar el Estatus del Complemento de Pagos '".$complemento_pagos->datos_complemento["uuid"]."'";
print '';
print 'Última Consulta de Estatus ';
print '';
print '';
if((int)DOL_VERSION > 15){
print ' ';
}
print $complemento_pagos->info_estatus["fecha_consulta_estatus"];
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
}else{
$titulo_consulta = "Consultar el Estatus del Complemento de Pagos '".$complemento_pagos->datos_complemento["uuid"]."'";
print '';
print 'Consultar Estatus ';
print '';
print '';
if((int)DOL_VERSION > 15){
print ' ';
}
print $complemento_pagos->info_estatus["fecha_consulta_estatus"];
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
}
}
print '';
print 'UUID: ';
print ''.$complemento_pagos->datos_complemento["uuid"].' ';
print ' ';
$modo_timbrado_desc = ($complemento_pagos->conf_ws["modo_timbrado"] == 1) ? "Producción" : "Pruebas";
print '';
print 'Modo de Timbrado Activo: ';
print ''.$modo_timbrado_desc.' ';
print ' ';
print '';
print 'Versión de CFDI Activa: ';
print ''.$conf->global->CFDIMX_VERSION_SAT.' ';
print ' ';
print '';
print 'Folios Timbrados: ';
print ''.$complemento_pagos->folios["timbrados"].' ';
print ' ';
print '';
print 'Folios Disponibles: ';
print ''.$complemento_pagos->folios["disponibles"].' ';
print ' ';
print '
';
print ' ';
print ' ';
print '
';
print '
';
print '
';
if(!is_null($complemento_pagos->lista_archivo_vinculados) && is_array($complemento_pagos->lista_archivo_vinculados) && count($complemento_pagos->lista_archivo_vinculados) > 0){
print '
';
print '
';
print '';
print '';
print '';
print '';
print 'Archivos vinculados
';
print ' ';
print ' ';
print ' ';
print '
';
print '';
print ' ';
print '
';
}
print '
';
print '';
if($complemento_pagos->num_solicitudes_cancelacion > 0){
print '
';
print '
';
print '';
print '';
print ' ';
print ' ';
print 'Solicitud de Cancelación ';
print ' ';
print ' ';
print '';
print 'UUID ';
print ''.$complemento_pagos->solicitud_cancelacion["uuid"].' ';
print ' ';
print '';
print 'Estatus ';
print ''.$complemento_pagos->solicitud_cancelacion["uuidStatusCode"].' ';
print ' ';
print '';
print 'Acuse ';
print '';
$ruta = DOL_URL_ROOT.'/document.php?modulepart=facture&file='.$object->ref.'/';
$ruta .= $complemento_pagos->solicitud_cancelacion["archivo"];
print '';
print ' ';
print $complemento_pagos->solicitud_cancelacion["archivo"];
print ' ';
print ' ';
print ' ';
print '';
print 'Fecha ';
print ''.$complemento_pagos->solicitud_cancelacion["fechahora"].' ';
print ' ';
print '
';
print '
';
}
print '
';
##Termina Archivos Vinculados , Estatus Complemento y botones de acciones
}else{
print '';
// print '
';
print ' ';
print ' ';
print 'Error: Se requiere que las Facturas Asociadas al Pago '.$object->getNomUrl(1).' esten timbradas. ';
print 'A continuación se muestran las Facturas con su Estatus. ';
print '';
print ' ';
print ' ';
print 'Factura Timbrada';
print ' ';
print ' ';
print ' ';
print ' ';
print 'Factura No Timbrada';
print ' ';
print ' ';
// print ' ';
print '
';
print '';
print '# ';
print 'Factura ';
print 'Estatus ';
print ' ';
foreach ($complemento_pagos->lista_val_doc_rel as $key => $value) {
$facture_static = new Facture($db);
$facture_static->fetch($value["facid"]);
print '';
print ''.($key+1).' ';
print '';
print $facture_static->getNomUrl(1);
print ' ';
print '';
print $value["icono"];
print ' ';
print ' ';
}
print '
';
print '
';
}
/********************* TERMINA VIEW ***********************/
/********************* INICIA MENSAJES de ACTIONS ***********************/
/********************* TERMINA MENSAJES de ACTIONS ***********************/
/********************* INICIA ACTIONS ************************/
/********************* TERMINA ACTIONS ***********************/
// End of page
llxFooter();
$db->close();