Esempio n. 1
0
 /**
  * 
  * @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();
     }
 }
Esempio n. 2
0
 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.');
     }
 }