public function PedidosLineas() { $nItems = 0; $nErrores = 0; $dbLink = mysql_connect("localhost", "root", "albatronic"); $query = "TRUNCATE {$this->dbDestino}.ErpPedidosLineas"; 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 c.Fecha, l.* from {$this->dbOrigen}.pedidos_cab as c LEFT JOIN {$this->dbOrigen}.pedidos_lineas as l ON c.IDPedido=l.IDPedido where l.IDPedido>0"; $result = mysql_query($query, $dbLink); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $c = new PedidosLineas(); $c->setIDPedido($row['IDPedido']); $c->setIDLinea($row['IDLinea']); $c->setIDArticulo($correspondencia[$row['IDArticulo']]); $c->setDescripcion($row['Descripcion']); $c->setUnidades($row['Unidades']); $c->setUnidadMedida("UMC"); $c->setPrecio($row['Precio']); $c->setDescuento($row['Descuento']); $c->setImporte($row['Importe']); if ($row['Fecha'] >= '2012-09-01') { $c->setIva($this->correspondenciaIva[$row['Iva']]); } else { $c->setIva($row['Iva']); } $c->setUnidadesRecibidas($row['Unidades'] - $row['PteFacturar']); $c->setUnidadesPtesFacturar($row['PteFacturar']); $c->setPrimaryKeyMD5(md5($row['IDLinea'])); if (!$c->create()) { $errores[] = $c->getErrores(); $nErrores++; } else { $nItems++; } } //mysql_close($dbLink); echo "Líneas de Pedido creadas {$nItems}<br/>"; if (count($errores)) { echo "<pre>"; print_r($errores); echo "</pre>"; } }
private function cargarLineas($idPedido, $idFirma, $idCliente, $archivoCsv) { $nLinea = 0; $errores = array(); $csv = new Archivo($archivoCsv); $csv->setColumnsDelimiter(";"); if ($csv->open()) { $articulo = new Articulos(); while ($linea = $csv->readLine()) { $nLinea++; $codigo = trim($linea[0]); $unidades = trim($linea[1]); if ($codigo != '') { $filtro = "IdFirma='{$idFirma}' and (Codigo='{$codigo}' or CodigoEAN='{$codigo}')"; //echo $filtro,"\n"; $rows = $articulo->cargaCondicion("Id,IdFamilia,Codigo,Descripcion,Pvd", $filtro); $row = $rows[0]; if ($row['Id'] != '') { $articulo = new Articulos($row['Id']); $pedidoLinea = new PedidosLineas(); $pedidoLinea->setIdPedido($idPedido); $pedidoLinea->setIdFirma($idFirma); $pedidoLinea->setIdFamilia($row['IdFamilia']); $pedidoLinea->setIdCliente($idCliente); $pedidoLinea->setIdArticulo($row['Id']); $pedidoLinea->setDescripcion($row['Descripcion']); $pedidoLinea->setUnidades($unidades); $pedidoLinea->setPrecio($row['Pvd']); $pedidoLinea->setIva($articulo->getIdIva()->getIva()); $pedidoLinea->setImporte($unidades * $row['Pvd']); $id = $pedidoLinea->create(); if (!$id) { $errores[] = "Línea {$nLinea}: No se pudo crear la línea de pedido."; } } else { $errores[] = "Línea {$nLinea}: El artículo {$codigo} no existe o no pertenece a la firma del pedido."; } } } $csv->close(); unset($articulo); unset($pedidoLinea); // Recalcular los totales del pedido if (count($errores) == 0) { $pedido = new PedidosCab($idPedido); $pedido->save(); unset($pedido); } } else { $errores[] = "No se ha podido abrir el archivo cargado"; } return $errores; }
private function importPedidosLineas() { $obj = new PedidosLineas(); $obj->truncate(); $file = getcwd() . "/docs/docs1/import/PEDIDOS_LINEAS.txt"; $archivo = new Archivo($file); $archivo->setColumnsDelimiter(";"); $archivo->setColumnsEnclosure("\""); $errores = 0; if ($archivo->open()) { // Leer la cabecera $titulos = $archivo->readLine(); // Leer el contenido $i = -1; while ($row = $archivo->readLine()) { $i++; $item = array(); foreach ($titulos as $key => $titulo) { $item[$titulo] = $row[$key]; } $obj = new PedidosLineas(); $obj->setIdPedido($item['IDPEDIDO']); $obj->setUnidades(self::trataNumero($item['UNIDADES'])); $obj->setIdFirma($item['IDFIRMA']); $obj->setIdFamilia($item['IDFAMILIA']); $obj->setIdArticulo(self::getArticulo($item['IDFIRMA'], $item['IDARTICULO'])); $obj->setIdCliente($item['IDCLIENTE']); $obj->setDescripcion(utf8_encode($item['DESCRIPCION'])); $obj->setPrecio(self::trataMoneda($item['PRECIO'])); $obj->setDescuento1(self::trataNumero($item['DCTO1'])); $obj->setDescuento2(self::trataNumero($item['DCTO2'])); $obj->setDescuento3(self::trataNumero($item['DCTO3'])); $obj->setImporte(self::trataMoneda($item['IMPORTE'])); $obj->setComisionAgente(self::trataNumero($item['COMISION_AGENTE'])); $obj->setComisionSubagente(self::trataNumero($item['COMISION_SUBAGENTE'])); $obj->setIva(self::trataNumero($item['IVA'])); $obj->setUnidadesPtesFacturar(self::trataNumero($item['PENDIENTE_FACTURAR'])); $obj->setObservations(utf8_encode($item['OBSERVACIONES'])); $id = $obj->create(); if (!$id) { print_r($obj->getErrores()); $errores++; } } $archivo->close(); } echo "PedidosLineas {$i}<br/>"; if ($errores) { echo "Errores PedidosLineas {$errores}</br>"; } }
/** * Crea un registro nuevo en la entidad correspondiente * y su correspondiente registro en las líneas de recepción * * @return array con el template y valores a renderizar */ public function newAction() { switch ($this->request["entidad"]) { //CREAR UNA LINEA DE PEDIDO NUEVA Y SU CORRESPONDIENTE LINEA DE RECEPCION case 'PedidosCab': $pedido = new PedidosCab($this->request['idEntidad']); $lineaPedido = new PedidosLineas(); $lineaPedido->setIDPedido($this->request['idEntidad']); $lineaPedido->setIDArticulo($this->request['idArticulo']); $lineaPedido->setDescripcion($this->request['Descripcion']); $lineaPedido->setUnidades(0); $lineaPedido->setIDEstado(1); $lineaPedido->setIDAgente($_SESSION['usuarioPortal']['Id']); $lineaPedido->setIDAlmacen($pedido->getIDAlmacen()->getIDAlmacen()); if ($lineaPedido->valida()) { if ($lineaPedido->create()) { $this->creaLineaRecepcion($this->request['entidad'], $this->request['idEntidad'], $lineaPedido); $pedido->setIDAlmacen($pedido->getIDAlmacen()->getIDAlmacen()); $pedido->setIncidencias($pedido->getIncidencias() . "\nFuera de pedido: " . $lineaPedido->getDescripcion()); $pedido->save(); } } $this->values['errores'] = $lineaPedido->getErrores(); unset($pedido); unset($lineaPedido); break; //CREAR UNA LINEA DE PEDIDO NUEVA Y SU CORRESPONDIENTE LINEA DE RECEPCION //CREAR UNA LINEA DE PEDIDO NUEVA Y SU CORRESPONDIENTE LINEA DE RECEPCION case 'ManufacCab': $manufac = new ManufacCab($this->request['idEntidad']); $lineaManufac = new ManufacLineas(); $lineaManufac->setIDManufac($this->request['idEntidad']); $lineaManufac->setTipo(1); $lineaManufac->setIDArticulo($this->request['idArticulo']); $lineaManufac->setDescripcion($this->request['Descripcion']); $lineaManufac->setUnidades(1); $lineaManufac->setIDEstado(0); $lineaManufac->setIDAlmacen($manufac->getIDAlmacenDestino()->getIDAlmacen()); if ($lineaManufac->valida()) { if ($lineaManufac->create()) { $this->creaLineaRecepcion($this->request['entidad'], $this->request['idEntidad'], $lineaManufac); $manufac->setIDAlmacenDestino($manufac->getIDAlmacenDestino()->getIDAlmacen()); $manufac->setIncidencias($manufac->getIncidencias() . "\nFuera de pedido: " . $lineaManufac->getDescripcion()); $manufac->save(); } } $this->values['errores'] = $lineaManufac->getErrores(); unset($manufac); unset($lineaManufac); break; //CREAR UNA LINEA DE TRASPASO NUEVA Y SU CORRESPONDIENTE LINEA DE RECEPCION //CREAR UNA LINEA DE TRASPASO NUEVA Y SU CORRESPONDIENTE LINEA DE RECEPCION case 'TraspasosCab': $traspaso = new TraspasosCab($this->request['idEntidad']); $lineaTraspaso = new TraspasosLineas(); $lineaTraspaso->setIDTraspaso($this->request['idEntidad']); $lineaTraspaso->setTipo(1); $lineaTraspaso->setIDArticulo($this->request['idArticulo']); $lineaTraspaso->setDescripcion($this->request['Descripcion']); $lineaTraspaso->setUnidades(1); $lineaTraspaso->setIDEstado(0); $lineaTraspaso->setIDAlmacen($traspaso->getIDAlmacenDestino()->getIDAlmacen()); if ($lineaTraspaso->valida()) { if ($lineaTraspaso->create()) { $this->creaLineaRecepcion($this->request['entidad'], $this->request['idEntidad'], $lineaTraspaso); $traspaso->setIDAlmacenDestino($traspaso->getIDAlmacenDestino()->getIDAlmacen()); $traspaso->setIncidencias($traspaso->getIncidencias() . "\nFuera de traspaso: " . $lineaTraspaso->getDescripcion()); $traspaso->save(); } } $this->values['errores'] = $lineaTraspaso->getErrores(); unset($traspaso); unset($lineaTraspaso); break; } return $this->listAction($this->request['entidad'], $this->request['idEntidad']); }
/** * Crea pedido web en base a lo que hay * en el carrito de la sesion en curso. * * Si ya hubiera un pedido asociado a esa sesion, * lo borra y lo crea de nuevo * * @param integer $idCliente EL id del cliente * @param boolean $avisoRecepcionParcial * @return integer $idPedido */ static function creaPedido($idCliente, $avisoRecepcionParcial = 0) { if ($avisoRecepcionParcial == '') { $avisoRecepcionParcial = 0; } $carrito = new Carrito(); $filtro = "Sesion='{$_SESSION['IdSesion']}'"; $rows = $carrito->cargaCondicion("*", $filtro, "Id ASC"); unset($carrito); $totales = self::getTotales(); $pedido = new PedidosCab(); $pedido->setIdSucursal($_SESSION['usuarioPortal']['SucursalActiva']['Id']); $pedido->setIdUsuario($_SESSION['usuarioPortal']['Id']); $pedido->setIdCliente($idCliente); $pedido->setFecha(date('Y-m-d H:i:s')); $pedido->setNItems($totales['Unidades']); $pedido->setImporte($totales['total']); $pedido->setAvisoRecepcionParcial($avisoRecepcionParcial); $idPedido = $pedido->create(); if ($idPedido > 0) { // Crear las líneas foreach ($rows as $row) { $linea = new PedidosLineas(); $linea->setIdPedido($idPedido); $linea->setIdSucursal($row['IdSucursal']); $linea->setIdDistribuidora($row['IdDistribuidora']); $linea->setIdUsuario($row['IdUsuario']); $linea->setIdCliente($idCliente); $linea->setSku($row['Sku']); $linea->setEan($row['Ean']); $linea->setDescripcion($row['Descripcion']); $linea->setAutor($row['Autor']); $linea->setEditorial($row['Editorial']); $linea->setUrlImagen($row['UrlImagen']); $linea->setUnidades($row['Unidades']); $linea->setPrecio($row['Precio']); $linea->setDescuento($row['Descuento']); $linea->setPvd($row['Pvd']); $linea->setImporte($row['Importe']); $linea->setIva($row['Iva']); $linea->setRecargo($row['Recargo']); $linea->setIdEstado(0); $linea->setIvaIncluido($row['IvaIncluido']); $linea->create(); //print_r($linea->getErrores()); } } return $idPedido; }