/**
  * GENERA LOS ALBARANES Y FACTURAS DE MANTENIMIENTOS
  * EN BASE A LOS INDICADO EN EL ARCHIVO CSV
  * 
  * @param string $fileCsv
  */
 public function mantenimientosAction($fileCsv = '')
 {
     if ($fileCsv == '') {
         $fileCsv = 'tmp/mantenimientos.csv';
     }
     $archivo = new Archivo($fileCsv);
     $archivo->setColumnsDelimiter(";");
     if ($archivo->open()) {
         while (($linea = $archivo->readLine()) !== FALSE) {
             $idSucursal = $linea[0];
             $idAlmacen = $linea[1];
             $idComercial = $linea[2];
             $idCliente = $linea[3];
             $codigoArticulo = $linea[4];
             $unidades = $linea[5];
             $precio = $linea[6];
             $cliente = new Clientes($idCliente);
             $direccionesEntrega = $cliente->getDireccionesEntrega();
             $direcEntrega = $direccionesEntrega[0];
             $albaran = new AlbaranesCab();
             $albaran->setIDCliente($cliente->getIDCliente());
             $albaran->setIDSucursal($idSucursal);
             $albaran->setFecha(date("d-m-Y"));
             $albaran->setIDDirec($direcEntrega->getIDDirec());
             $albaran->setIDAlmacen($idAlmacen);
             $albaran->setIDComercial($idComercial);
             $albaran->setIDContador(2);
             $albaran->setIDEstado(0);
             $albaran->setIDFP($cliente->getIDFP()->getIDFP());
             $idAlbaran = $albaran->create();
             if ($idAlbaran) {
                 $articulo = new Articulos();
                 $articulo = $articulo->find("Codigo", $codigoArticulo);
                 $lineas = new AlbaranesLineas();
                 $lineas->setIDAlbaran($idAlbaran);
                 $lineas->setIDArticulo($articulo->getIDArticulo());
                 $lineas->setDescripcion($articulo->getDescripcion() . " Mes " . date("m Y"));
                 $lineas->setUnidades($unidades);
                 $lineas->setPrecio($precio);
                 $lineas->setDescuento(0);
                 $lineas->setIva($articulo->getIDIva()->getIva());
                 $lineas->setImporte($unidades * $precio);
                 $ok = $lineas->create();
                 if ($ok) {
                     $albaran = new AlbaranesCab($idAlbaran);
                     $albaran->confirma();
                     if ($albaran->expide()) {
                         $albaran = new AlbaranesCab($idAlbaran);
                         $contador = new Contadores();
                         $contador = $contador->dameContador($idSucursal, 2);
                         $albaran->facturar($contador);
                     }
                 } else {
                     print_r($lineas->getErrores());
                     exit;
                 }
             } else {
                 $this->values['errores'][] = "No se ha podido crear el albarán para " . $cliente->getRazonSocial();
             }
         }
     } else {
         $this->values['errores'][] = "El fichero de importación " . $fileCsv . " no existe";
     }
 }
 public function AlbaranesLineas()
 {
     $nItems = 0;
     $nErrores = 0;
     $dbLink = mysql_connect("localhost", "root", "albatronic");
     $query = "TRUNCATE {$this->dbDestino}.ErpAlbaranesLineas";
     mysql_query($query);
     $query = "select Codigo,IDArticulo from {$this->dbDestino}.ErpArticulos";
     $result = mysql_query($query, $dbLink);
     while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
         $correspondencia[$row['Codigo']] = $row['IDArticulo'];
     }
     $query = "select l.*, c.IDAgente, c.Expedido, c.IDFactura, c.Fecha from {$this->dbOrigen}.albaranes_lineas as l LEFT JOIN {$this->dbOrigen}.albaranes_cab as c ON l.IDAlbaran=c.IDAlbaran where c.IDAlbaran>0";
     $result = mysql_query($query, $dbLink);
     while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
         $c = new AlbaranesLineas();
         $c->setIDAlbaran($row['IDAlbaran']);
         $c->setIDLinea($row['IDLinea']);
         $c->setIDArticulo($correspondencia[$row['IDArticulo']]);
         $c->setDescripcion($row['Descripcion']);
         $c->setUnidades($row['Unidades']);
         $c->setUnidadMedida("UMV");
         $c->setPvpVigente($row['Precio']);
         $c->setPrecio($row['Precio']);
         $c->setDescuento($row['Descuento']);
         $c->setImporte($row['Importe']);
         $c->setImporteCosto($row['ImporteCosto']);
         $c->setIDAlmacen(1);
         if ($row['Fecha'] >= '2012-09-01') {
             $c->setIva($this->correspondenciaIva[$row['Iva']]);
         } else {
             $c->setIva($row['Iva']);
         }
         $c->setIDAgente($this->agentes[$row['IDAgente']]);
         $c->setIDComercial($this->agentes[$row['IDAgente']]);
         if ($row['Expedido'] == 0) {
             $c->setIDEstado(0);
         } elseif ($row['IDFactura']) {
             $c->setIDEstado(3);
         } else {
             $c->setIDEstado(2);
         }
         $c->setPrimaryKeyMD5(md5($row['IDLinea']));
         if (!$c->create()) {
             $errores[] = $c->getErrores();
             $nErrores++;
         } else {
             $nItems++;
         }
     }
     //mysql_close($dbLink);
     echo "Líneas Albaranes {$nItems}<br/>";
     if (count($errores)) {
         echo "<pre>";
         print_r($errores);
         echo "</pre>";
     }
 }
Exemple #3
0
 /**
  * Confirma el presupuesto, que consiste en aprobarlo
  * y generar un albaran en base al mismo.
  * Devuelve el id del albaran generado
  * IMPORTANTE: APLICA LA TARIFA Y PROMOCIONES VIGENTES
  *
  * @return integer El id del albaran generado
  */
 public function confirma()
 {
     //Crear cabecera de albaran.
     //No pongo los totales porque los recalculo una vez
     //creadas las lineas del albaran.
     $contador = new Contadores();
     $albaran = new AlbaranesCab();
     $albaran->setIDSucursal($this->IDSucursal);
     $albaran->setIDContador($contador->dameContador($this->IDSucursal, 1));
     $albaran->setIDAlmacen($this->IDAlmacen);
     $albaran->setIDAgente($_SESSION['usuarioPortal']['Id']);
     $albaran->setIDComercial($this->IDComercial);
     $albaran->setFecha(date('d-m-Y'));
     $albaran->setIDCliente($this->IDCliente);
     $albaran->setIDDirec($this->IDDirec);
     $albaran->setDescuento($this->Descuento);
     $albaran->setObservaciones($this->Observaciones . "Proviene del Psto N. " . $this->NumeroPsto);
     $albaran->setIDAgencia($this->IDAgencia);
     $albaran->setIDFP($this->IDFP);
     $albaran->setIDPsto($this->IDPsto);
     $idAlbaran = $albaran->create();
     unset($contador);
     if ($idAlbaran) {
         // Marco el presupuesto como confirmado (Estado=1)
         $this->setIDEstado(1);
         $this->setIDAlbaran($idAlbaran);
         $this->setFechaAceptacion(date('d-m-Y'));
         $this->save();
         // Crear las lineas de albaran
         $lineas = new PstoLineas();
         $rows = $lineas->cargaCondicion('*', "IDPsto='{$this->IDPsto}'", "IDLinea ASC");
         unset($lineas);
         foreach ($rows as $row) {
             $linea = new AlbaranesLineas();
             $linea->setIDAlbaran($idAlbaran);
             $linea->setIDArticulo($row['IDArticulo']);
             $linea->setDescripcion($row['Descripcion']);
             $linea->setUnidades($row['Unidades']);
             $linea->setPrecio($row['Precio']);
             $linea->setDescuento($row['Descuento']);
             $linea->setImporte($row['Importe']);
             $linea->setImporteCosto($row['ImporteCosto']);
             $linea->setIDAlmacen($this->IDAlmacen);
             $linea->setIva($row['Iva']);
             $linea->setRecargo($row['Recargo']);
             $linea->setIDAgente($_SESSION['usuarioPortal']['Id']);
             $linea->setIDComercial($this->IDComercial);
             $linea->setAltoAl($row['AltoAl']);
             $linea->setAnchoAl($row['AnchoAl']);
             $linea->setIDEstado(0);
             if ($linea->valida()) {
                 $linea->create();
                 // Marco la línea de psto como confirmado (Estado=1)
                 $lineaPsto = new PstoLineas($row['IDLinea']);
                 $lineaPsto->setIDEstado(1);
                 $lineaPsto->save();
                 unset($lineaPsto);
             }
         }
         // Recalcular el albarán
         $albaran->recalcula();
         $albaran->save();
         // Confirmar el albarán
         $albaran->confirma();
         $this->_alertas[] = "Se ha generado el albarán n. " . $albaran->getNumeroAlbaran();
     } else {
         $this->_alertas[] = "No se ha generado albarán";
     }
     return $idAlbaran;
 }