function getFactura($enviar = false, $out = OUT_PDF) { $ready = null; $xml = ""; $unidad = "NO APLICA"; $cantidad = 1; $mql = new MQL(); $xLis = new cSQLListas(); $xLoc = new cLocal(); $xPais = new cDomiciliosPaises(EACP_CLAVE_DE_PAIS); $xLog = new cCoreLog(); $sql = "SELECT * FROM `operaciones_archivo_de_facturas` WHERE `clave_de_recibo` = " . $this->mCodigoDeRecibo . " LIMIT 0,1"; $xArch = new cOperaciones_archivo_de_facturas(); $DFact = $mql->getDataRow($sql); if (isset($DFact["clave_de_recibo"])) { $xArch->setData($DFact); $this->mMessages .= "OK\tEl UUID existe " . $xArch->uuid()->v(OUT_TXT) . "\r\n"; if ($enviar == true) { if ($this->getOPersona() == null) { } else { $xSoc = $this->getOPersona(); $email = $xSoc->getCorreoElectronico(); $comprobante = PATH_FACTURAS . $xArch->uuid()->v(OUT_TXT); file_put_contents($comprobante . ".xml", base64_decode($xArch->contenido()->v(OUT_TXT))); file_put_contents($comprobante . ".pdf", base64_decode($xArch->impreso()->v(OUT_TXT))); $ready = $out == OUT_PDF ? base64_decode($xArch->impreso()->v(OUT_TXT)) : base64_decode($xArch->contenido()->v(OUT_TXT)); $xNotif = new cNotificaciones(); //PDF y XML $arrFil = array(); $arrFil["archivo1"]["path"] = $comprobante . ".pdf"; $arrFil["archivo2"]["path"] = $comprobante . ".xml"; $xNotif->sendMail("Factura del Recibo " . $this->mCodigoDeRecibo, "Factura del Recibo " . $this->mCodigoDeRecibo, $email, $arrFil); //Enviar al Archivo mail $xNotif->sendMail("Factura del Recibo " . $this->mCodigoDeRecibo, "Factura del Recibo " . $this->mCodigoDeRecibo, FACTURACION_MAIL_ARCHIVO, $arrFil); $this->mMessages .= $xNotif->getMessages(); } } else { $ready = $out == OUT_PDF ? $xArch->impreso()->v(OUT_TXT) : $xArch->contenido()->v(OUT_TXT); } } else { $xLog->add("WARN\tGenerando Nueva Factura\r\n", $xLog->DEVELOPER); //cargar Archivo $xPais->init(); if ($this->mReciboIniciado == false) { $this->init(); } if ($this->getOPersona() == null) { $xLog->add("ERROR\tAl cargar la Persona\r\n"); } else { $xFact = new cFacturaElectronica(); //datos de la emisora //persona iniciada $xSoc = $this->getOPersona(); $email = $xSoc->getCorreoElectronico(); $xFact->setEmisor(EACP_NAME, EACP_RFC, EACP_DOMICILIO_CALLE, EACP_DOMICILIO_NUM_EXT, EACP_DOMICILIO_NUM_INT, EACP_CODIGO_POSTAL, EACP_COLONIA, EACP_MUNICIPIO, EACP_ESTADO, $xPais->getNombre()); $xFact->setRegimenFiscal(EACP_REGIMEN_FISCAL); $calle = $xLoc->DomicilioCalle(); $numeroInt = $xLoc->DomicilioNumeroInterior(); $numeroExt = $xLoc->DomicilioNumeroExterior(); $codigoPostal = $xLoc->DomicilioCodigoPostal(); $colonia = $xLoc->DomicilioColonia(); $xSocDom = $xSoc->getODomicilio(); $pais = $xLoc->getNombreDePais(); $estado = $xLoc->DomicilioEstado(); $municipio = $xLoc->DomicilioMunicipio(); $tasa_iva = TASA_IVA; $xFact->setLugarDeExpedicion($xLoc->DomicilioCalle(), $xLoc->DomicilioNumeroExterior(), $xLoc->DomicilioNumeroInterior(), $xLoc->DomicilioCodigoPostal(), $xLoc->DomicilioColonia(), $xLoc->DomicilioMunicipio(), $xLoc->DomicilioEstado(), $xLoc->getNombreDePais()); if ($xSocDom == null) { $xLog->add("WARN\tNo hay domicilio Valido\r\n", $xLog->DEVELOPER); } else { $calle = $xSocDom->getCalle(); $numeroExt = $xSocDom->getNumeroExterior(); $numeroInt = $xSocDom->getNumeroInterior(); $codigoPostal = $xSocDom->getCodigoPostal(); $colonia = $xSocDom->getColonia(); $municipio = $xSocDom->getMunicipio(); $estado = $xSocDom->getEstado(); $pais = $xSocDom->getNombreDePais(); } //Cargar datos del Docto //$this->getOrigen(); $OTipoRec = $this->getOTipoRecibo(); if ($OTipoRec->getOrigen() == RECIBOS_ORIGEN_MIXTO or $OTipoRec->getOrigen() == RECIBOS_ORIGEN_COLOCACION) { $xCred = new cCredito($this->getCodigoDeDocumento()); $xCred->init(); $tasa_iva = $xCred->getTasaIVA(); $xLog->add("WARN\tLa tasa de IVA es {$tasa_iva}\r\n", $xLog->DEVELOPER); } $xFact->setReceptor($xSoc->getNombreCompleto(), $xSoc->getRFC(true, true), $calle, $numeroExt, $numeroInt, $codigoPostal, $colonia, $municipio, $estado, $pais); //Datos del pagos $formaDePago = "Pago en una sola exhibición"; $cuentaDePago = "No Identificado"; $arrEquiv = array(TESORERIA_COBRO_DOCTO => "Documentos", TESORERIA_COBRO_EFECTIVO => "Efectivo", TESORERIA_COBRO_INTERNO => "Documentos", TESORERIA_COBRO_MULTIPLE => "Documentos", TESORERIA_COBRO_NINGUNO => "Documentos", TESORERIA_COBRO_TRANSFERENCIA => "Transferencia", TESORERIA_COBRO_CHEQUE => "Cheque"); $metodoDePago = $arrEquiv[$this->getTipoDePago()]; //cargar equivalencias //TODO: Considerar cambios en otro de tipo de tributacion if ($this->getTipoDePago() == TESORERIA_COBRO_TRANSFERENCIA or $this->getTipoDePago() == TESORERIA_COBRO_CHEQUE) { $OCaja = $this->getOCaja(); $cuentaDePago = $OCaja->getCuentaBancoActivo(); } //Cheque, Transferencia, Depósito $xFact->setDatosDePago($formaDePago, $metodoDePago, $cuentaDePago); $sql = "SELECT\n\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`codigo_de_base`,\n\t\t\t\t\t`operaciones_mvtos`.`recibo_afectado`,\n\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`miembro`,\n\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`subclasificacion`,\n\t\t\t\t\t`operaciones_tipos`.`descripcion_operacion` AS `operacion`,\n\t\t\t\t\t`operaciones_mvtos`.`fecha_operacion`,\n\t\t\t\t\t`operaciones_mvtos`.`afectacion_real` AS 'monto' \n\t\t\t\tFROM\n\t\t\t\t\t`operaciones_mvtos` `operaciones_mvtos` \n\t\t\t\t\t\tINNER JOIN `eacp_config_bases_de_integracion_miembros` \n\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros` \n\t\t\t\t\t\tON `operaciones_mvtos`.`tipo_operacion` = \n\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`miembro` \n\t\t\t\t\t\t\tINNER JOIN `operaciones_tipos` `operaciones_tipos` \n\t\t\t\t\t\t\tON `operaciones_mvtos`.`tipo_operacion` = `operaciones_tipos`.\n\t\t\t\t\t\t\t`idoperaciones_tipos` \n\t\t\t\tWHERE\n\t\t\t\t\t(`eacp_config_bases_de_integracion_miembros`.`codigo_de_base` =11000) AND\n\t\t\t\t\t(`operaciones_mvtos`.`recibo_afectado` =" . $this->mCodigoDeRecibo . " )"; $iva = 0; $total = 0; $rs = $mql->getDataRecord($sql); foreach ($rs as $rows) { $descripcion = $rows["operacion"]; $valor = $rows["monto"]; $tipo = $rows["subclasificacion"]; $total += $valor; if ($tipo == 1000) { $iva += $rows["monto"]; } else { $xFact->addConcepto($cantidad, $unidad, $valor, $descripcion); } } //agregar IVA if ($iva > 0) { $xFact->addTrasladado("IVA", $tasa_iva, $iva); } $xml = $xFact->get(); $this->mOFactura = $xFact; if ($total <= 0) { $enviar = false; } } if ($enviar == true) { if ($this->mOFactura != null) { if (filter_var($email, FILTER_VALIDATE_EMAIL)) { if ($this->mOFactura->timbrar() == 1) { //ready = true $xNotif = new cNotificaciones(); //PDF y XML $arrFil = array(); $arrFil["archivo1"]["path"] = $this->mOFactura->getComprobante() . ".pdf"; $arrFil["archivo2"]["path"] = $this->mOFactura->getComprobante() . ".xml"; $xNotif->sendMail("Factura del Recibo " . $this->mCodigoDeRecibo, "Factura del Recibo " . $this->mCodigoDeRecibo, $email, $arrFil); //Enviar al Archivo mail $xNotif->sendMail("Factura del Recibo " . $this->mCodigoDeRecibo, "Factura del Recibo " . $this->mCodigoDeRecibo, FACTURACION_MAIL_ARCHIVO, $arrFil); //Guardar en DB $this->mOFactura->setArchivar($this->mCodigoDeRecibo); $xLog->add($xNotif->getMessages(), $xLog->DEVELOPER); $ready = $out == OUT_PDF ? $this->mOFactura->getPDF() : $this->mOFactura->getXML(); } } else { $xLog->add("WARN\tNo hay email valido para la Factura ({$email})\r\n", $xLog->DEVELOPER); } $xLog->add($this->mOFactura->getMessages(), $xLog->DEVELOPER); } } } $this->mMessages .= $xLog->getMessages(); return $ready; }
function analizarOperacion($persona, $monto_operado, $moneda, $tipo_de_pago, $fecha = false, $recibo = false, $perfil = false) { $moneda = strtoupper($moneda); $sql = "SELECT * FROM `aml_risk_catalog` \n\t\t\t\t\tWHERE (`aml_risk_catalog`.`tipo_de_riesgo` = 912)\n\t\t\t\t\tAND (`aml_risk_catalog`.`clave_de_control` != " . AML_CLAVE_RIESGO_OPS_INDIVIDUALES . ")\n\t\t\t\t\tORDER BY \n\t\t\t\t\t`aml_risk_catalog`.`unidad_de_medida`,\t`aml_risk_catalog`.`unidades_ponderadas` DESC "; $ql = new MQL(); $risk = new cAml_risk_catalog(); $raised = false; $xAML = new cAML(); $rs = $ql->getDataRecord($sql); //Datos de Operaciones Mensuales $xAMLP = new cAMLPersonas($persona); $xAMLP->init(); $OMens = $xAMLP->getOAcumuladoDeOperaciones($fecha, $fecha, $moneda, $tipo_de_pago); $monto_original = $OMens->getMonto() + $monto_operado; $this->mMessages .= "WARN\tOperaciones acumuladas por " . $OMens->getMonto() . "\r\n"; if ($perfil == false) { $this->mMessages .= "ERROR\tNo existe el perfil tipo de pago {$tipo_de_pago} en Moneda {$moneda} \r\n"; //agregar perfil a cero } else { $perfil = setNoMenorQueCero($perfil); $sql = "SELECT * FROM `personas_perfil_transaccional_tipos` WHERE `idpersonas_perfil_transaccional_tipos` = {$perfil} LIMIT 0,1"; $d = $ql->getDataRow($sql); if (isset($d["tipo_de_exhibicion"])) { $tipo_de_pago = strtolower($d["tipo_de_exhibicion"]); } $this->mMessages .= "OK\tCarga del perfil {$perfil} con tipo de pago {$tipo_de_pago}\r\n"; } //verificar operaciones con reglas foreach ($rs as $rows) { $risk->setData($rows); $reporteMoneda = strtoupper($risk->unidad_de_medida()->v()); if ($reporteMoneda == $moneda) { if ($raised == false) { $reporteMoneda = strtoupper($risk->unidad_de_medida()->v()); $xMon = new cMonedas($reporteMoneda); $valor_local = $xMon->getValor(); $clave = $risk->clave_de_control()->v(); if ($xAML->isTransaccionVigilada($tipo_de_pago) != false) { $unidadesReportadas = $risk->unidades_ponderadas()->v(); $unidadesOperadas = 0; if ($reporteMoneda == AML_CLAVE_MONEDA_LOCAL) { $unidadesOperadas = $monto_original; } else { $this->mMessages .= "WARN\tUnidades reportadas {$unidadesOperadas} en Moneda {$moneda} con valor local de {$valor_local}\r\n"; $unidadesReportadas = $valor_local * $unidadesReportadas / VALOR_ACTUAL_DOLAR; $unidadesOperadas = $monto_original * $valor_local / VALOR_ACTUAL_DOLAR; } if ($unidadesOperadas >= $unidadesReportadas) { $this->mMsgAlert = "ERROR\tUnidades excedidas de {$unidadesReportadas} operados {$unidadesOperadas} en la Moneda {$reporteMoneda}\r\n"; $this->mMessages .= $this->mMsgAlert; $raised = true; $this->mTipoDeAlerta = $clave; $this->mTipoDeReporte = $risk->forma_de_reportar()->v(); } else { $this->mMessages .= "OK\tOperacion Normal de {$unidadesOperadas} no sobrepasan {$unidadesReportadas}\r\n"; } //Validar sivienen de paises con alto riesgo $xP = new cDomiciliosPaises(); $xP->getPaisPorMoneda($reporteMoneda); $nombrepais = $xP->getNombre(); if ($xP->getRiesgoAMLAsociado() >= SYS_RIESGO_MEDIO) { //Agregar alerta por operaciones en paises de alto y medio riesgo $this->mMsgAlert .= "ERROR\tFondos provenientes de paises con Riesgo Elevado {$nombrepais}\r\n"; $this->mMessages .= "ERROR\tFondos provenientes de paises con Riesgo Elevado {$nombrepais}\r\n"; } } else { $this->mMessages .= "OK\tOperacion Omitida por ser tipo de pago {$tipo_de_pago} ({$reporteMoneda} )\r\n"; } } } else { $this->mMessages .= "OK\tOperacion Omitida por ser Moneda {$moneda} de {$reporteMoneda}\r\n"; } } //setLog($this->mMessages); if (MODO_DEBUG == true) { setLog($this->getMessages()); } return $raised; }
/** * Muestra una Ficha de Informacion del Socio * * @param string $domicilio_extendido * @param string $trTool * @param string $marco * @return string */ function getFicha($domicilio_extendido = false, $marco = true, $trTool = "") { $eldom = ""; $idpersona = $this->mCodigo; $ccache = $domicilio_extendido == true ? EACP_CLAVE . ".ficha.{$idpersona}.ext" : EACP_CLAVE . ".ficha.{$idpersona}"; $this->mIDEnCache = $ccache; $xCache = new cCache(); $exoFicha = null; if ($xCache->isReady() == true) { $exoFicha = $xCache->get($ccache); } if ($exoFicha == null) { $DSocio = $this->getDatosInArray(); $DIngreso = $this->getDatosDeIngreso_InArray(); $empresa = $this->getClaveDeEmpresa(); $tingreso = $DIngreso["descripcion_tipoingreso"]; $xLng = new cLang(); $xT = new cTipos(); $xT->setForceMayus(); $xT->setToUTF8(); $mdom = $this->getDomicilio(99); $elnombre = $this->getNombreCompleto(); // $DSocio["apellidopaterno"] . " " . $DSocio["apellidomaterno"] . " " . $DSocio["nombrecompleto"]; if ($domicilio_extendido == false) { $eldom = strlen(trim($mdom)) < 6 ? "" : "<tr><th class='izq'>" . $xLng->getT("TR.Domicilio") . "</th><td colspan='3'>" . htmlentities($xT->cChar($mdom)) . "</td></tr>"; } else { if ($this->getODomicilio() != null) { $eldom = "<tr><td colspan='4'>" . $this->getODomicilio()->getFicha($this->getTelefonoPrincipal()) . "</td></tr>"; } } $rfc = $this->getRFC(); $curp = $this->getCURP(); $tool = $trTool; $wTable = ""; $tdExtra = ""; $tdCurp = "<th class='izq'>" . $xLng->getT("TR.CURP") . "</th><td>{$curp}</td>"; if ($this->getEsPersonaFisica() == false) { $tdCurp = ""; //OBTENER REPRESENTANTE LEGAL //22Octubre2013 $xRels = $this->getORepresentanteLegal(); if ($xRels != null) { $tdCurp = "<th class='izq'>" . $xRels->getNombreRelacion() . "</th><td>" . $xRels->getCodigoDePersona() . "-" . $xRels->getNombreDelRelacionado() . "</td>"; } } if ($this->mGrupoAsociado != DEFAULT_GRUPO) { $dG = new cGrupo($this->mGrupoAsociado); $grupo = $dG->getNombre(); $tdExtra .= "<tr><th class='izq'>" . $xLng->getT("TR.Grupo Solidario") . "</th><td colspan='3'>{$grupo}</td></tr>"; } if ($empresa != DEFAULT_EMPRESA) { $xEmp = new cEmpresas($empresa); $xEmp->init(); $Nempresa = cleanString($xEmp->getNombre()); $tdExtra .= "<tr><th class='izq'>" . $xLng->getT("TR.Empresa") . "</th><td colspan='3'>{$Nempresa}</td></tr>"; } if (getEsModuloMostrado(USUARIO_TIPO_OFICIAL_AML) == true) { $xDPais = new cDomiciliosPaises($this->getPaisDeOrigen()); $xDPais->init(); $NPais = $xDPais->getNombre(); $xRiesgo = new cAml_risk_levels(); $xRiesgo->setData($xRiesgo->query()->initByID($this->getNivelDeRiesgo())); $tdExtra .= "<tr><th class='izq'>" . $xLng->getT("TR.Riesgo de Persona") . "</th><td>" . strtoupper($xRiesgo->nombre_del_nivel()->v()) . "</td>\n\t\t\t\t\t\t<th class='izq'>" . $xLng->getT("TR.pais") . "</th><td colspan='3'>{$NPais}</td></tr>"; } $exoFicha = "\n\t\t\t<table {$wTable} >\n\t\t\t<tbody>\n\t\t\t\t<tr>\n\t\t\t\t\t<th class='izq'>" . $xLng->getT("TR.Codigo") . "</th>\n\t\t\t\t\t<th>" . $this->mCodigo . "</th>\n\t\t\t\t\t<th class='izq'>" . $xLng->getT("TR.Nombre_completo") . "</th>\n\t\t\t\t\t<td>{$elnombre}</td>\n\t\t\t\t</tr>\n\t\t\t\t{$eldom}\n\t\t\t\t<tr>\n\t\t\t\t\t<th class='izq'>" . $xLng->getT("TR.RFC") . "</th>\n\t\t\t\t\t<td>{$rfc}</td>\n\t\t\t\t\t{$tdCurp}\n\t\t\t\t</tr>\n\t\t\t\t{$tdExtra}\n\t\t\t</tbody>\n\t\t\t<tfoot>{$tool}</tfoot>\n\t\t\t</table>"; if ($marco == true) { $exoFicha = "<fieldset><legend>| " . $xLng->getT("TR.Ficha de Informacion") . " |</legend>\n\t\t\t\t\t\t{$exoFicha}\n\t\t\t\t\t\t</fieldset>"; } if ($xCache->isReady() == true) { $xCache->set($ccache, $exoFicha); } } return $exoFicha; }