/** * 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'); } }