/** * * @param factura_cliente $factura */ public function sync_factura_cli(&$factura) { if ($factura) { $recibos = $this->recibo_cliente->all_from_factura($factura->idfactura); if ($factura->pagada and count($recibos) == 0) { /// 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_cliente(); $recibo->cifnif = $factura->cifnif; $recibo->coddivisa = $factura->coddivisa; $recibo->tasaconv = $factura->tasaconv; $recibo->codpago = $factura->codpago; $recibo->codserie = $factura->codserie; $recibo->codcliente = $factura->codcliente; $recibo->nombrecliente = $factura->nombrecliente; $recibo->estado = 'Emitido'; $recibo->fecha = $factura->fecha; $recibo->fechav = Date('d-m-Y', strtotime($factura->fecha . ' +' . $pla->dias . 'days')); $recibo->idfactura = $factura->idfactura; 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->cbc->all_from_cliente($factura->codcliente) 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_cliente(); $recibo->cifnif = $factura->cifnif; $recibo->coddivisa = $factura->coddivisa; $recibo->tasaconv = $factura->tasaconv; $recibo->codpago = $factura->codpago; $recibo->codserie = $factura->codserie; $recibo->codcliente = $factura->codcliente; $recibo->nombrecliente = $factura->nombrecliente; $recibo->estado = 'Emitido'; $recibo->fecha = $factura->fecha; $recibo->fechav = Date('d-m-Y', strtotime($factura->fecha . ' ' . $formap->vencimiento)); $recibo->idfactura = $factura->idfactura; $recibo->importe = $factura->total; $recibo->numero = $recibo->new_numero($recibo->idfactura); $recibo->codigo = $factura->codigo . '-' . sprintf('%02s', $recibo->numero); foreach ($this->cbc->all_from_cliente($factura->codcliente) 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 generar_recibo_pago(&$pago, $ejercicio, $subcuenta, $subcuenta_caja) { $recibo = new recibo_cliente(); $recibo->apartado = $this->factura->apartado; $recibo->cifnif = $this->factura->cifnif; $recibo->ciudad = $this->factura->ciudad; $recibo->codcliente = $this->factura->codcliente; $recibo->coddir = $this->factura->coddir; $recibo->coddivisa = $this->factura->coddivisa; $recibo->tasaconv = $this->factura->tasaconv; $recibo->codpago = $this->factura->codpago; $recibo->codserie = $this->factura->codserie; $recibo->numero = $recibo->new_numero($this->factura->idfactura); $recibo->codigo = $this->factura->codigo . '-' . sprintf('%02s', $recibo->numero); $recibo->codpais = $this->factura->codpais; $recibo->codpostal = $this->factura->codpostal; $recibo->direccion = $this->factura->direccion; $recibo->estado = 'Emitido'; $recibo->fecha = date('d-m-Y'); $recibo->fechav = date('d-m-Y'); $recibo->fechap = $pago->fecha; $recibo->idfactura = $this->factura->idfactura; $recibo->importe = $pago->importe; $recibo->nombrecliente = $this->factura->nombrecliente; $recibo->provincia = $this->factura->provincia; if ($recibo->save()) { $pago->idrecibo = $recibo->idrecibo; $pago->save(); $pago_recibo = new pago_recibo_cliente(); $pago_recibo->idrecibo = $recibo->idrecibo; $pago_recibo->fecha = $recibo->fecha; $pago_recibo->tipo = 'Pago'; $pago_recibo->idsubcuenta = $subcuenta->idsubcuenta; $pago_recibo->codsubcuenta = $subcuenta->codsubcuenta; $pago_recibo->idasiento = $this->nuevo_asiento_pago($pago_recibo, $ejercicio, $recibo, $subcuenta, $subcuenta_caja); $recibo->estado = 'Pagado'; if ($pago_recibo->save()) { $recibo->save(); } else { $this->new_error_msg('Error al guardar el pago del recibo.'); } } else { $this->new_error_msg('Error al guardar el recibo.'); } }