/** * * @param factura_proveedor $factura */ public function sync_factura_prov(&$factura) { if ($factura) { $recibos = $this->recibo_proveedor->all_from_factura($factura->idfactura); if (count($recibos) == 0 and $factura->pagada) { /// no hacemos nada } else { if (count($recibos) == 0) { $formap = $this->forma_pago->get($factura->codpago); if ($formap) { $plazos = $this->plazo_pago->all_from($formap->codpago); if ($plazos) { $pendiente = $factura->total; foreach ($plazos as $i => $pla) { $recibo = new recibo_proveedor(); $recibo->cifnif = $factura->cifnif; $recibo->coddivisa = $factura->coddivisa; $recibo->tasaconv = $factura->tasaconv; $recibo->codproveedor = $factura->codproveedor; $recibo->nombreproveedor = $factura->nombre; $recibo->estado = 'Emitido'; $recibo->fecha = $factura->fecha; $recibo->fechav = Date('d-m-Y', strtotime($factura->fecha . ' +' . $pla->dias . 'days')); $recibo->idfactura = $factura->idfactura; $recibo->codpago = $factura->codpago; $recibo->codserie = $factura->codserie; if ($i + 1 == count($plazos)) { $recibo->importe = round($pendiente, FS_NF0); } else { $recibo->importe = round($factura->total * $pla->aplazado / 100, FS_NF0); $pendiente -= $recibo->importe; } $recibo->numero = $recibo->new_numero($recibo->idfactura); $recibo->codigo = $factura->codigo . '-' . sprintf('%02s', $recibo->numero); foreach ($this->cbp->all_from_proveedor($recibo->codproveedor) as $cuenta) { if (is_null($recibo->codcuenta) or $cuenta->principal) { $recibo->codcuenta = $cuenta->codcuenta; $recibo->iban = $cuenta->iban; $recibo->swift = $cuenta->swift; } } if ($recibo->save()) { $recibos[] = $recibo; } else { $this->new_error_msg('Error al generar el recibo.'); } } } else { $recibo = new recibo_proveedor(); $recibo->cifnif = $factura->cifnif; $recibo->coddivisa = $factura->coddivisa; $recibo->tasaconv = $factura->tasaconv; $recibo->codproveedor = $factura->codproveedor; $recibo->nombreproveedor = $factura->nombre; $recibo->estado = 'Emitido'; $recibo->fecha = $factura->fecha; $recibo->fechav = Date('d-m-Y', strtotime($factura->fecha . ' ' . $formap->vencimiento)); $recibo->idfactura = $factura->idfactura; $recibo->codpago = $factura->codpago; $recibo->codserie = $factura->codserie; $recibo->importe = $factura->total; $recibo->numero = $recibo->new_numero($recibo->idfactura); $recibo->codigo = $factura->codigo . '-' . sprintf('%02s', $recibo->numero); foreach ($this->cbp->all_from_proveedor($recibo->codproveedor) as $cuenta) { if (is_null($recibo->codcuenta) or $cuenta->principal) { $recibo->codcuenta = $cuenta->codcuenta; $recibo->iban = $cuenta->iban; $recibo->swift = $cuenta->swift; } } if ($recibo->save()) { $recibos[] = $recibo; } else { $this->new_error_msg('Error al generar el recibo.'); } } } } else { $pagado = 0; foreach ($recibos as $res) { if ($res->estado == 'Pagado') { $pagado += $res->importe; } } $factura->pagada = $pagado >= $factura->total; $factura->save(); } } return $recibos; } else { return array(); } }
private function nuevo_recibo() { $factura = new factura_proveedor(); $this->factura = $factura->get($_POST['idfactura']); if ($this->factura) { $recibo = new recibo_proveedor(); $recibo->cifnif = $this->factura->cifnif; $recibo->coddivisa = $this->factura->coddivisa; $recibo->tasaconv = $this->factura->tasaconv; $recibo->codpago = $this->factura->codpago; $recibo->codproveedor = $this->factura->codproveedor; $recibo->codserie = $this->factura->codserie; $recibo->estado = 'Emitido'; $recibo->fecha = $_POST['fecha']; $recibo->fechav = $_POST['fechav']; $recibo->idfactura = $this->factura->idfactura; $recibo->importe = floatval($_POST['importe']); $recibo->nombreproveedor = $this->factura->nombre; $recibo->numero = $recibo->new_numero($recibo->idfactura); $recibo->codigo = $this->factura->codigo . '-' . sprintf('%02s', $recibo->numero); $cbp = new cuenta_banco_proveedor(); foreach ($cbp->all_from_proveedor($recibo->codproveedor) as $cuenta) { if (is_null($recibo->codcuenta) or $cuenta->principal) { $recibo->codcuenta = $cuenta->codcuenta; $recibo->iban = $cuenta->iban; $recibo->swift = $cuenta->swift; } } if ($recibo->save()) { $this->new_message('Recibo creado correctamente.'); header('Location: ' . $recibo->url()); } else { $this->new_error_msg('Error al guardar el recibo.'); } } else { $this->new_error_msg('Factura no encontrada.'); } }