function TrasladoBrutal($Motivo) { $IdComprobante = $this->_IdComprobante; $IdPedido = $this->_IdPedido; $linea = 0; $totalimporte = 0; $Origen = $this->_origen; $Destino = $this->_destino; $igv = getSesionDato("IGV"); $marcadotrans = getSesionDato("CarritoTrans"); $Trans = getSesionDato("CarritoMover"); $aSeries = getSesionDato("CarritoMoverSeries"); $almacenes = new almacenes(); $articulo = new articulo(); foreach ($marcadotrans as $idarticulo) { $oProducto = new producto(); $articulo->Load($idarticulo); $oProducto->Load($articulo->get("IdProducto")); $cantidad = 0; $idproducto = $articulo->get("IdProducto"); $precio = round($Trans['Precio' . $idarticulo], 2); $costo = round($Trans['Costo' . $idarticulo], 2); $mSeleccion = $Trans[$idarticulo]; $aSeleccion = explode("~", $mSeleccion); $esSerie = $aSeries[$idarticulo] ? true : false; foreach ($aSeleccion as $Pedido) { $aPedido = explode(":", $Pedido); $IdPedidoDet = $aPedido[0]; //Kardex $cantidad = $aPedido[1]; $LoteVence = isset($aPedido[3]) ? $aPedido[3] : 0; $totalimporte += $precio * $cantidad; $existencias = $almacenes->obtenerExistenciasKardex($idproducto, $Origen); //Control if ($existencias < $cantidad) { return; } //Ventas $IdComprobanteDet = registrarDetalleTrasladoSalida($idproducto, $cantidad, $costo, $precio, $IdComprobante, $IdPedidoDet, $esSerie, $LoteVence); //Compras $nwIdPedidoDet = registrarDetalleTrasladoEntrada($IdPedido, $idproducto, $LoteVence, $cantidad, $costo, $precio, $esSerie); //Numeros de Series registrarTrasladoSeries($Origen, $Destino, $IdPedido, $nwIdPedidoDet, $IdPedidoDet, $idarticulo, $idproducto, $IdComprobante); //Kardex registrarTrasladoKardexFifo($Origen, $idproducto, $IdPedidoDet, $IdComprobanteDet, $costo, $cantidad, $existencias, $Motivo); //Kadex costo almacen $almacenes->actualizarCosto($idproducto, $Origen); //Kadex resumen almacen actualizaResumenKardex($idproducto, $Origen); } } //Importes Compras & Ventas registrarImportesTraslado($totalimporte, $IdComprobante, $IdPedido, $Motivo); }
function registrarAjusteSalidaKardex($IdComprobante, $Origen, $Operacion = 1, $IdKardexAjusteOperacion = 0, $IdInventario = 0, $Obs = false, $xkeydet, $ckeydet) { $productos = new producto(); $almacenes = new almacenes(); $res = obtenerDetalleVentaAjuste($IdComprobante, $ckeydet); while ($row = Row($res)) { $id = $row['IdProducto']; $Costo = $row['CostoUnitario']; $Cantidad = $row['Cantidad']; $IdPedidoDet = $row['IdPedidoDet']; $IdComprobanteDet = $row['IdComprobanteDet']; $existencias = $almacenes->obtenerExistenciasKardex($id, $Origen); if (isset($xkeydet[$IdComprobanteDet])) { if ($xkeydet[$IdComprobanteDet] == $IdPedidoDet) { registrarSalidaKardexFifo($id, $Cantidad, $Costo, $Operacion, $Origen, $IdPedidoDet, $IdComprobanteDet, $existencias, $IdKardexAjusteOperacion, $IdInventario, $Obs); $almacenes->actualizarCosto($id, $Origen); //$productos->actualizarCosto($id,$Costo); actualizaResumenKardex($id, $Origen); if ($IdInventario) { $almacenes->actualizaEstadoInventario($Origen, $id); } } } } //echo 1; }
function Alta($IdComprobante, $SerialNum, $local, $documentoventa) { $this->IdComprobante = $IdComprobante; $almacenes = new almacenes(); $aPedidoDet = explode(",", $this->pedidodet); //IdPedidoDet:unidades:Serie;Serie,... $aStatus = explode("~", $this->status); //Serie~Lote~Vence... //Filas... foreach ($aPedidoDet as $xrow) { global $UltimaInsercion; $axrow = explode(":", $xrow); $idpedidodet = isset($axrow[1]) ? $axrow[0] : 0; $unidades = isset($axrow[1]) ? $axrow[1] : $this->unidades; $xnseries = isset($axrow[2]) ? $axrow[2] : false; $xnseries = isset($axrow[2]) ? str_replace(";", ",", $xnseries) : false; //$importe = ($this->importe)/$unidades; $importe = $unidades * $this->unidadimporte; //ComprobanteDet... $Keys = "IdComprobante,"; $Values = "'" . $IdComprobante . "',"; $Keys .= "IdProducto,"; $Values .= "'" . $this->idproducto . "',"; $Keys .= "IdPedidoDet,"; $Values .= "'" . $idpedidodet . "',"; $Keys .= "Cantidad,"; $Values .= "'" . $unidades . "',"; $Keys .= "Precio,"; $Values .= "'" . $this->precio . "',"; $Keys .= "CostoUnitario,"; $Values .= "'" . $this->costo . "',"; $Keys .= "Descuento,"; $Values .= "'" . $this->descuento . "',"; $Keys .= "Importe,"; $Values .= "'" . $importe . "',"; $Keys .= "Impuesto,"; $Values .= "'" . $this->impuesto . "',"; $Keys .= "Concepto,"; $Values .= "'" . $this->concepto . "',"; $Keys .= "Talla,"; $Values .= "'" . $this->talla . "',"; $Keys .= "Color,"; $Values .= "'" . $this->color . "',"; $Keys .= "Referencia,"; $Values .= "'" . $this->referencia . "',"; $Keys .= "CodigoBarras,"; $Values .= "'" . $this->codigobarras . "',"; $Keys .= "Oferta,"; $Values .= "'" . $this->oferta . "',"; $Keys .= "Serie,"; $Values .= "'" . $aStatus[0] . "',"; $Keys .= "Lote,"; $Values .= "'" . $aStatus[1] . "',"; $Keys .= "Vencimiento"; $Values .= "'" . $aStatus[2] . "'"; $sql = "insert into ges_comprobantesdet (" . $Keys . ") values (" . $Values . ")"; query($sql, "Detalle ticket"); $this->nticket = $SerialNum; $idcomprobantedet = $UltimaInsercion; //Existencias... $existencias = $almacenes->obtenerExistenciasKardex($this->idproducto, $local); if ($unidades > $existencias) { continue; } //Series... if (isset($axrow[2])) { registraSalidaSeriesPedidoDet($this->idproducto, $IdComprobante, $xnseries, $idpedidodet); } //Kardex... $Operacion = 2; //Venta if (isset($axrow[1])) { registrarSalidaKardexFifo($this->idproducto, $unidades, $this->costo, $Operacion, $local, $idpedidodet, $idcomprobantedet, $existencias, false, false, false); } //Almacen Kardex... $almacenes->actualizarCosto($this->idproducto, $local); $almacenes->actualizaOfertaUnidades($this->idproducto, $local, $this->oferta); actualizaResumenKardex($this->idproducto, $local); } }
function DevolverComprobanteTPV($IdComprobante, $Monto, $idDependiente, $Comprobante, $Items) { $IdLocal = getSesionDato("IdTiendaDependiente"); $TipoVenta = getSesionDato("TipoVentaTPV"); $TipoComprobante = 'AlbaranInt'; $Motivo = 4; //DevoluciĆ³n $Serie = $IdLocal; $nroDocumento = $IdComprobante; //++++++ COMPROBANTE ++++++++++++ //Anula y Registra Devoluc Comprobante if (!AnularNumeroComprobante($IdComprobante, $IdLocal)) { registrarCodigoComprobanteOrigen($IdComprobante, $IdLocal, $Motivo, $TipoVenta); } //++++++ CAJA ++++++++++++ //registrar sustraccion por devolucion $IdPartida = $TipoVenta == 'VC' ? 16 : 17; $concepto = "Devolucion " . $Comprobante; $arqueo = new movimiento(); $IdArqueo = $arqueo->GetArqueoActivo($IdLocal); $FechaCaja = $arqueo->getAperturaCaja($IdLocal, $TipoVenta); if ($Monto > 0) { EntregarOperacionCaja($IdLocal, $Monto, $concepto, $IdPartida, 'Sustraccion', $FechaCaja, $IdArqueo, $TipoVenta); } //++++++ PREVENTA ++++++++++++ $textDoc = 'Preventa'; $codDocumento = explode("-", NroComprobantePreVentaMax($IdLocal, $textDoc, $IdArqueo)); $sreDocumento = $codDocumento[0] != $IdArqueo ? $IdArqueo : $codDocumento[0]; $nroDocumento = $codDocumento[0] != $IdArqueo ? 1 : $codDocumento[1]; //trae comprobante... $sql = " select IdCliente,ImporteNeto,ImporteImpuesto," . " TotalImporte,Impuesto " . " from ges_comprobantes " . " where IdComprobante = '" . $IdComprobante . "' " . " and Eliminado = 0 "; $res = query($sql); $row = Row($res); // crea preventa... global $UltimaInsercion; $Keys = "IdLocal,"; $Values = "'" . $IdLocal . "',"; $Keys .= "IdUsuario,"; $Values .= "'" . $idDependiente . "',"; $Keys .= "NPresupuesto,"; $Values .= "'" . $nroDocumento . "',"; $Keys .= "TipoPresupuesto,"; $Values .= "'" . $textDoc . "',"; $Keys .= "TipoVentaOperacion,"; $Values .= "'" . $TipoVenta . "',"; $Keys .= "FechaPresupuesto,"; $Values .= "NOW(),"; $Keys .= "ImporteNeto,"; $Values .= "'" . $row["ImporteNeto"] . "',"; $Keys .= "ImporteImpuesto,"; $Values .= "'" . $row["ImporteImpuesto"] . "',"; $Keys .= "Impuesto,"; $Values .= "'" . $row["Impuesto"] . "',"; $Keys .= "TotalImporte,"; $Values .= "'" . $row["TotalImporte"] . "',"; $Keys .= "Status,"; $Values .= "'Pendiente',"; $Keys .= "IdCliente,"; $Values .= "'" . $row["IdCliente"] . "',"; $Keys .= "ModoTPV,"; $Values .= "'venta',"; $Keys .= "Serie"; $Values .= "'" . $sreDocumento . "'"; $sql = "insert into ges_presupuestos (" . $Keys . ") values (" . $Values . ")"; query($sql); //Presupuesto $IdPresupuesto = $UltimaInsercion; //Historial Venta... cargarVenta2HistorialVenta($row["IdCliente"], $row["TotalImporte"], false, false); //++++++ DETALLE PREVENTA ++++++++++++ // trae detalle comprobante... $sql = " select IdProducto, " . " sum(Cantidad) as Cantidad, " . " sum(Precio) as Precio, " . " sum(Descuento) as Descuento, " . " sum(Importe) as Importe, " . " Concepto,Talla,Color,Referencia," . " CodigoBarras," . " group_concat(IdPedidoDet) as IdPedidoDet," . " group_concat(IdAlbaran) as IdAlbaran, Serie, IdComprobanteDet " . " from ges_comprobantesdet " . " where IdComprobante = '" . $IdComprobante . "' " . " and Eliminado = 0 " . " and IdPedidoDet <> 0 " . " group by IdProducto "; $res = query($sql); if (!$res) { return false; } while ($row = Row($res)) { $Keys = "IdPresupuesto,"; $Values = "'" . $IdPresupuesto . "',"; $Keys .= "IdProducto,"; $Values .= "'" . $row['IdProducto'] . "',"; $Keys .= "Cantidad,"; $Values .= "'" . $row['Cantidad'] . "',"; $Keys .= "Precio,"; $Values .= "'" . $row['Precio'] . "',"; $Keys .= "Descuento,"; $Values .= "'" . $row['Descuento'] . "',"; $Keys .= "Importe,"; $Values .= "'" . $row['Importe'] . "',"; $Keys .= "Concepto,"; $Values .= "'" . $row['Concepto'] . "',"; $Keys .= "Talla,"; $Values .= "'" . $row['Talla'] . "',"; $Keys .= "Color,"; $Values .= "'" . $row['Color'] . "',"; $Keys .= "Referencia,"; $Values .= "'" . $row['Referencia'] . "',"; $Keys .= "CodigoBarras"; $Values .= "'" . $row['CodigoBarras'] . "'"; $sql = "insert into ges_presupuestosdet (" . $Keys . ") values (" . $Values . ")"; query($sql); } //++++++ LIBERA SERIES PRODUCTOS COMPROBANTE DETALLE +++++++ // trae detalle comprobante... $sql = " select IdProducto,Cantidad,IdPedidoDet," . " IdAlbaran,Serie,IdComprobanteDet " . " from ges_comprobantesdet " . " where IdComprobante = '" . $IdComprobante . "' " . " and Eliminado = 0 " . " and Serie = 1 " . " and IdPedidoDet <> 0 "; $res = query($sql); if (!$res) { return false; } while ($row = Row($res)) { $DocumentoSalida = $row["IdAlbaran"] ? $row["IdAlbaran"] : $IdComprobante; $aSeries = getSeries2IdProductoVentas($DocumentoSalida, $row["IdProducto"], $row["IdPedidoDet"]); // retorna las series... registraDevolucionSeriesVenta($row["IdProducto"], $IdComprobante, $IdPresupuesto, $aSeries); // libera series del detalle comprobante... $sql = " update ges_comprobantesdet set Serie = 0 " . " where IdComprobanteDet=" . $row['IdComprobanteDet']; query($sql); } //++++++ MARCAR PRODUCTOS Y CANTIDAD COMPROBANTES DETALLE ++++++++++ $xitem = explode("~", $Items); foreach ($xitem as $key => $xdet) { $xdetalle = explode(":", $xdet); $sql = " update ges_comprobantesdet set CantidadDevolucion = " . $xdetalle[1] . " where IdComprobanteDet=" . $xdetalle[0]; query($sql); } //++++++ KARDEX ++++++++++++ $almacenes = new almacenes(); $Operacion = 2; //Venta - Devolucion $sql = " select IdProducto,Cantidad,CostoUnitario," . " IdPedidoDet,IdComprobanteDet " . " from ges_comprobantesdet " . " where IdComprobante = '{$IdComprobante}' " . " and IdPedidoDet <> 0 " . " and Eliminado = 0 "; $res = query($sql); if (!$res) { return; } while ($row = Row($res)) { $id = $row['IdProducto']; $costo = $row['CostoUnitario']; $existencias = $almacenes->obtenerExistenciasKardex($id, $IdLocal); $Obs = $concepto; // registra ingreso por pedidodet registrarEntradaKardexFifo($id, $row['Cantidad'], $costo, $Operacion, $IdLocal, $row['IdPedidoDet'], $existencias, 0, 0, $row['IdComprobanteDet'], $Obs); // actualiza registros kardex $almacenes->actualizarCosto($id, $IdLocal); actualizaResumenKardex($id, $IdLocal); } return " ~" . $IdPresupuesto; }