/** * Crea los recibos de la factura en curso en base a la forma de pago. * Si el n. de vctos de la forma de pago es 0, no se crea ningún vencimiento. * * Antes de crearlos, borro los posibles que hubiese */ public function creaVctos() { $this->borraVctos(); if ($this->Total == 0) { return; } $factura = new FrecibidasCab($this->IDFactura); //SI LA FACTURA ES SIN IVA, EN CASO DE CREAR RECIBOS SE MARCARÁN //CON N. DE ASIENTO 999999 PARA QUE NO SE TRASPASEN A CONTABILIDAD. $tieneiva = $factura->getIva1() + $factura->getIva2() + $factura->getIva3() != 0; if ($tieneiva) { $asiento = 0; } else { $asiento = 999999; } $formaPago = $factura->getIDFP(); $nvctos = $formaPago->getNumeroVctos(); $fecha = new Fecha($factura->getFecha()); $mes = $fecha->getmm(); $dia = $fecha->getdd(); $anio = $fecha->getaaaa(); unset($fecha); if ($nvctos > 0) { $importe = ROUND($factura->getTotal() / $nvctos, 2); $diferencia = $factura->getTotal() - $importe * $nvctos; $i = 0; while ($i < $nvctos) { $i = $i + 1; if ($i == 1) { $intervalo = $formaPago->getDiaPrimerVcto(); $importeRecibo = $importe + $diferencia; } else { $intervalo = $intervalo + $formaPago->getDiasIntervalo(); $importeRecibo = $importe; } $numRecibo = str_pad($i, 2, "0", STR_PAD_LEFT) . str_pad($nvctos, 2, "0", STR_PAD_LEFT); $fVcto = date('Y-m-d', mktime(0, 0, 0, $mes, $dia + $intervalo, $anio)); $recibo = new RecibosProveedores(); $recibo->setRecibo($numRecibo); $recibo->setIDSucursal($factura->getIDSucursal()->getIDSucursal()); $recibo->setIDFactura($factura->getIDFactura()); $recibo->setIDProveedor($factura->getIDProveedor()->getIDProveedor()); $recibo->setFecha($factura->getFecha()); $recibo->setVencimiento($fVcto); $recibo->setImporte($importeRecibo); $recibo->setIban($factura->getIDProveedor()->getIban()); $recibo->setBic($factura->getIDProveedor()->getBic()); $recibo->setMandato($factura->getIDProveedor()->getMandato()); $recibo->setFechaMandato($factura->getIDProveedor()->getFechaMandato()); $recibo->setConcepto("Pago Factura"); $recibo->setAsiento($asiento); $recibo->setIDEstado($formaPago->getEstadoRecibo()->getIDTipo()); $recibo->setIDRemesa(''); $recibo->setRemesar(1); $recibo->setCContable($formaPago->getCContable()); $recibo->create(); unset($recibo); } } unset($factura); unset($formaPago); }
public function RecibosProveedores() { $nItems = 0; $nErrores = 0; $dbLink = mysql_connect("localhost", "root", "albatronic"); $query = "TRUNCATE {$this->dbDestino}.ErpRecibosProveedores"; mysql_query($query); // Correspondencia entre número de factura e id de factura $query = "SELECT r.NumeroFactura as Numero, f.IDFactura as Id FROM {$this->dbOrigen}.recibos_proveedores AS r LEFT JOIN {$this->dbOrigen}.frecibidas_cab AS f ON r.NumeroFactura = f.NumeroFactura"; $result = mysql_query($query, $dbLink); while ($row1 = mysql_fetch_array($result, MYSQL_ASSOC)) { $correspondencia[$row1['Numero']] = $row1['Id']; } $query = "select * from {$this->dbOrigen}.recibos_proveedores"; $result = mysql_query($query, $dbLink); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $c = new RecibosProveedores(); $c->setIDRecibo($row['IDRecibo']); $c->setRecibo($row['Recibo']); $c->setIDSucursal(1); $c->setIDFactura($correspondencia[$row['NumeroFactura']]); $c->setIDProveedor($row['IDProveedor']); $c->setFecha($row['Fecha']); $c->setVencimiento($row['Vencimiento']); $c->setImporte($row['Importe']); $c->setIban(Utils::iban($row['CBanco'])); $c->setMandato($row['IDProveedor']); $c->setFechaMandato('2013-01-01'); $c->setIDRemesa($row['IDRemesa']); $c->setCContable($row['CContable']); $c->setAsiento($row['Asiento']); $c->setConcepto($row['Concepto']); if ($row['Estado'] == 'C') { $c->setIDEstado(6); } else { $c->setIDEstado(0); } $c->setPrimaryKeyMD5(md5($row['IDRecibo'])); if (!$c->create()) { $errores[] = $c->getErrores(); $nErrores++; } else { $nItems++; } } //mysql_close($dbLink); echo "Recibos proveedores creados {$nItems}<br/>"; if (count($errores)) { echo "<pre>"; print_r($errores); echo "</pre>"; } }
/** * Cambia de estado al conjunto de recibos recibidos * * Actualiza su estado y la fecha de vencimiento * Además genera apunte de caja si procede * * @return array */ public function PagarAction() { if ($this->values['permisos']['permisosModulo']['UP']) { $formaPago = new FormasPago($this->request['idFP']); $anotarEnCaja = $formaPago->getAnotarEnCaja()->getIDTipo() == '1'; $caja = new CajaArqueos(); foreach ($this->request['RecibosProveedores'] as $recibo) { $objeto = new RecibosProveedores($recibo['IDRecibo']); $objeto->setVencimiento($this->request['fechaPago']); $objeto->setCContable($formaPago->getCContable()); $objeto->setIDEstado($formaPago->getEstadoRecibo()->getIDTipo()); if ($objeto->save() and $anotarEnCaja) { $caja->anotaEnCaja($objeto, $this->request['idFP']); } } unset($objeto); unset($formaPago); unset($caja); return $this->listAction(); } else { return array('template' => '_global/forbiden.html.twig'); } }