/** * Guarda todos los recibos que le vienen en el request y * comprueba el cuadre entre el importe total de todos los * recibos de cada factura y el importe total de la factura * * @return array */ public function guardarAction() { if ($this->values['permisos']['permisosModulo']['UP']) { $arrayFacturas = array(); foreach ($this->request['RecibosProveedores'] as $recibo) { $objeto = new RecibosProveedores($recibo['IDRecibo']); $objeto->setVencimiento($recibo['Vencimiento']); $objeto->setImporte($recibo['Importe']); $objeto->setIban($recibo['Iban']); $objeto->setConcepto($recibo['Concepto']); $objeto->setIDRemesa($recibo['IDRemesa']); $objeto->setIDEstado($recibo['IDEstado']); $objeto->save(); // Guardo temporalmente todas las facturas afectadas $arrayFacturas[] = $objeto->getIDFactura()->getIDFactura(); } unset($objeto); // Comprobar cuadre recibos-factura $arrayFacturas = array_unique($arrayFacturas); foreach ($arrayFacturas as $idFactura) { $factura = new FrecibidasCab($idFactura); $totalFactura = $factura->getTotal(); $sumaRecibos = $factura->getSumaRecibos(); if ($totalFactura != $sumaRecibos) { $diferencia = $totalFactura - $sumaRecibos; $this->values['errores'][] = "Descuadre en factura {$factura->getNumeroFactura()}"; $this->values['errores'][] = "Total Factura: {$totalFactura}"; $this->values['errores'][] = "Suma Recibos {$sumaRecibos}."; $this->values['errores'][] = "Diferencia {$diferencia}"; } } unset($factura); return $this->listAction(); } else { return array('template' => '_global/forbiden.html.twig'); } }
/** * 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); }