예제 #1
0
 /**
  * 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);
 }
예제 #2
0
 public function RecibosProveedores()
 {
     $nItems = 0;
     $nErrores = 0;
     $dbLink = mysql_connect("localhost", "root", "albatronic");
     $query = "TRUNCATE {$this->dbDestino}.ErpRecibosProveedores";
     mysql_query($query);
     // Correspondencia entre número de factura e id de factura
     $query = "SELECT r.NumeroFactura as Numero, f.IDFactura as Id FROM {$this->dbOrigen}.recibos_proveedores AS r LEFT JOIN {$this->dbOrigen}.frecibidas_cab AS f ON r.NumeroFactura = f.NumeroFactura";
     $result = mysql_query($query, $dbLink);
     while ($row1 = mysql_fetch_array($result, MYSQL_ASSOC)) {
         $correspondencia[$row1['Numero']] = $row1['Id'];
     }
     $query = "select * from {$this->dbOrigen}.recibos_proveedores";
     $result = mysql_query($query, $dbLink);
     while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
         $c = new RecibosProveedores();
         $c->setIDRecibo($row['IDRecibo']);
         $c->setRecibo($row['Recibo']);
         $c->setIDSucursal(1);
         $c->setIDFactura($correspondencia[$row['NumeroFactura']]);
         $c->setIDProveedor($row['IDProveedor']);
         $c->setFecha($row['Fecha']);
         $c->setVencimiento($row['Vencimiento']);
         $c->setImporte($row['Importe']);
         $c->setIban(Utils::iban($row['CBanco']));
         $c->setMandato($row['IDProveedor']);
         $c->setFechaMandato('2013-01-01');
         $c->setIDRemesa($row['IDRemesa']);
         $c->setCContable($row['CContable']);
         $c->setAsiento($row['Asiento']);
         $c->setConcepto($row['Concepto']);
         if ($row['Estado'] == 'C') {
             $c->setIDEstado(6);
         } else {
             $c->setIDEstado(0);
         }
         $c->setPrimaryKeyMD5(md5($row['IDRecibo']));
         if (!$c->create()) {
             $errores[] = $c->getErrores();
             $nErrores++;
         } else {
             $nItems++;
         }
     }
     //mysql_close($dbLink);
     echo "Recibos proveedores creados {$nItems}<br/>";
     if (count($errores)) {
         echo "<pre>";
         print_r($errores);
         echo "</pre>";
     }
 }
 /**
  * Cambia de estado al conjunto de recibos recibidos
  * 
  * Actualiza su estado y la fecha de vencimiento
  * Además genera apunte de caja si procede
  * 
  * @return array
  */
 public function PagarAction()
 {
     if ($this->values['permisos']['permisosModulo']['UP']) {
         $formaPago = new FormasPago($this->request['idFP']);
         $anotarEnCaja = $formaPago->getAnotarEnCaja()->getIDTipo() == '1';
         $caja = new CajaArqueos();
         foreach ($this->request['RecibosProveedores'] as $recibo) {
             $objeto = new RecibosProveedores($recibo['IDRecibo']);
             $objeto->setVencimiento($this->request['fechaPago']);
             $objeto->setCContable($formaPago->getCContable());
             $objeto->setIDEstado($formaPago->getEstadoRecibo()->getIDTipo());
             if ($objeto->save() and $anotarEnCaja) {
                 $caja->anotaEnCaja($objeto, $this->request['idFP']);
             }
         }
         unset($objeto);
         unset($formaPago);
         unset($caja);
         return $this->listAction();
     } else {
         return array('template' => '_global/forbiden.html.twig');
     }
 }