function setGenerarIDE_mensual($recibo, $fecha_de_corte = false) { if ($fecha_de_corte == false) { $fecha_de_corte = fechasys(); } $dia_inicial = date("Y-m", strtotime($fecha_de_corte)) . "-01"; $dia_final = date("Y-m-t", strtotime($fecha_de_corte)); $BySucursal = ""; //" AND (`operaciones_recibos`.`sucursal` = '" . getSucursal() . "') "; $msg = "=============\t\tGENERANDO EL IMPUESTO SOBRE DEPOSITOS EN EFECTIVO\r\n"; //general el Archivo de IDE pagado //Impuesto sobre Depositos en Efectivo $sql = "SELECT\n\t\t\t\t\t\t`operaciones_mvtos`.`socio_afectado`,\n\t\t\t\t\t\t`operaciones_recibos`.`tipo_pago`,\n\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`codigo_de_base`,\n\t\t\t\t\t\tSUM(`operaciones_mvtos`.`afectacion_real`) AS 'monto'\n\t\t\t\t\tFROM\n\t\t\t\t\t\t`operaciones_mvtos` `operaciones_mvtos`\n\t\t\t\t\t\t\tINNER JOIN `operaciones_recibos` `operaciones_recibos`\n\t\t\t\t\t\t\tON `operaciones_mvtos`.`recibo_afectado` = `operaciones_recibos`.\n\t\t\t\t\t\t\t`idoperaciones_recibos`\n\t\t\t\t\t\t\t\tINNER JOIN `eacp_config_bases_de_integracion_miembros`\n\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`\n\t\t\t\t\t\t\t\tON `operaciones_mvtos`.`tipo_operacion` =\n\t\t\t\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`miembro`\n\t\t\t\tWHERE\n\t\t\t\t\t(`operaciones_mvtos`.`fecha_afectacion` >='{$dia_inicial}')\n\t\t\t\t\tAND\n\t\t\t\t\t(`operaciones_mvtos`.`fecha_afectacion` <='{$dia_final}')\n\t\t\t\t\tAND\n\t\t\t\t\t(`eacp_config_bases_de_integracion_miembros`.`codigo_de_base` = 2600)\n\t\t\t\t\tAND\n\t\t\t\t\t(`operaciones_recibos`.`tipo_pago` = 'efectivo' )\n\t\t\t\t\t{$BySucursal}\n\t\t\t\t\tGROUP BY\n\t\t\t\t\t`eacp_config_bases_de_integracion_miembros`.`codigo_de_base`,\n\t\t\t\t\t`operaciones_mvtos`.`socio_afectado`,\n\t\t\t\t\t`operaciones_recibos`.`tipo_pago`\n\t\t\t\tHAVING\n\t\t\t\t\tmonto > " . EXCENCION_IDE; $cRec = new cReciboDeOperacion(12, false, $recibo); $cRec->setNumeroDeRecibo($recibo, true); $rsIDE = mysql_query($sql, cnnGeneral()); while ($rwIDE = mysql_fetch_array($rsIDE)) { $socio = $rwIDE["socio_afectado"]; $monto = $rwIDE["monto"]; if ($monto > EXCENCION_IDE) { //TODO: Analize this line $SqlMax = "\n\t\t\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\t\t\t\t`captacion_cuentas`.*,\n\t\t\t\t\t\t\t\t\t\t`captacion_cuentastipos`.`descripcion_cuentastipos` AS `tipo`,\n\t\t\t\t\t\t\t\t\t\t`captacion_subproductos`.`descripcion_subproductos` AS `subproducto`,\n\t\t\t\t\t\t\t\t\t\t`captacion_subproductos`.`algoritmo_de_premio`,\n\t\t\t\t\t\t\t\t\t\t`captacion_subproductos`.`algoritmo_de_tasa_incremental`,\n\t\t\t\t\t\t\t\t\t\t`captacion_subproductos`.`metodo_de_abono_de_interes`,\n\t\t\t\t\t\t\t\t\t\t`captacion_subproductos`.`destino_del_interes`\n\t\t\t\t\t\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t\t\t\t\t\t`captacion_cuentas` `captacion_cuentas`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN `captacion_cuentastipos` `captacion_cuentastipos`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tON `captacion_cuentas`.`tipo_cuenta` = `captacion_cuentastipos`.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`idcaptacion_cuentastipos`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN `captacion_subproductos` `captacion_subproductos`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tON `captacion_cuentas`.`tipo_subproducto` = `captacion_subproductos`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.`idcaptacion_subproductos`\n\t\t\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\t\tnumero_socio={$socio}\n\t\t\t\t\t\t\t\t\t\t\tAND `captacion_cuentas`.tipo_cuenta = 10\n\t\t\t\t\t\t\t\t\t\tORDER BY saldo_cuenta DESC\n\t\t\t\t\t\t\t\t\t\t\t\t\tLIMIT 0,1"; $DCtaMax = obten_filas($SqlMax); $CuentaMax = $DCtaMax["numero_cuenta"]; $saldo = $DCtaMax["saldo_cuenta"]; if (isset($CuentaMax) and $saldo > TOLERANCIA_SALDOS) { $cCta = new cCuentaALaVista($CuentaMax); $cCta->initCuentaByCodigo($DCtaMax); $ide = $cCta->getMontoIDE($fecha_de_corte); if ($ide > 0) { //Si el Saldo de la Cuenta es Mayor al IDE if ($saldo >= $ide) { $ReciboIDE = $cCta->setRetenerIDE($fecha_de_corte, $recibo, $ide); } else { //Si no el IDE es igual al Saldo $ide_por_pagar = ($ide - $saldo) * -1; $ide = $saldo; $ReciboIDE = $cCta->setRetenerIDE($fecha_de_corte, $recibo, $ide); //OK: agregar movimiento ide por pagar if ($ide_por_pagar > 0) { $cRec->setNuevoMvto($fecha_de_corte, $ide_por_pagar, 236, 1, "IDE no Retenido del {$dia_inicial} al {$dia_final}", 1, TM_CARGO, $socio, $CuentaMax); } } $msg .= $cCta->getMessages("txt"); } else { $msg .= "{$socio}\t{$CuentaMax}\tNO_PIDE\tNo retuvo IDE porque el Monto a Retener es {$ide}\r\n"; } } else { //OK: agregar movimiento ide por pagar $msg .= "{$socio}\t{$CuentaMax}\tNO_CTA\tNo retuvo IDE por que no existe una cuenta valida({$saldo}) para descontar, Base de {$monto}\r\n"; } } else { $msg .= "{$socio}\t{$CuentaMax}\tNO_IDE\tNo retuvo IDE por que a Base de Calculo es {$monto}\r\n"; } } return $msg; }
$Fecha = $Fecha == false ? fechasys() : $xF->getFechaISO($Fecha); $idsocio = parametro("idsocio", false, MQL_INT); //$xT->cInt($_POST["idsocio"]); $detalles = parametro("idobservaciones", ""); $monto = parametro("idmonto", 0, MQL_FLOAT); $cheque = parametro("cheque", DEFAULT_CHEQUE); $comopago = parametro("ctipo_pago", DEFAULT_TIPO_PAGO, MQL_RAW); $folio_fiscal = parametro("foliofiscal", DEFAULT_RECIBO_FISCAL); $fecha_de_operacion = $Fecha; //$xSoc = new cSocio($idsocio); if (setNoMenorQueCero($monto) <= 0) { $msg .= "ERROR\tEL MONTO DEBE SER MAYOR A CERO\r\n"; } else { $xCta = new cCuentaALaVista($iddocto, $idsocio); if ($xCta->init() == true) { $ide = $xCta->getMontoIDE($fecha_de_operacion, $monto, $comopago); $recibo = $xCta->setDeposito($monto, $cheque, $comopago, $folio_fiscal, $detalles, DEFAULT_GRUPO, $fecha_de_operacion); if ($ide > 0) { $saldo = $xCta->getNuevoSaldo(); $ide_observacion = "Retencion Generada por un Deposito de {$monto}, Recibo {$recibo}, saldo de {$saldo}"; //Si el Saldo de la Cuenta es Mayor al IDE if ($saldo > $ide) { $ReciboIDE = $xCta->setRetenerIDE($fecha_de_operacion, false, $ide, $ide_observacion); } else { //Si no el IDE es igual al Saldo $ide = $saldo; $ReciboIDE = $xCta->setRetenerIDE($fecha_de_operacion, false, $ide, $ide_observacion); } } //Imprime la Ficha del socio $xRec = new cReciboDeOperacion();