/** * 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>"; } }
/** * 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; }