Ejemplo n.º 1
0
        private void BtnAnular_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("¿Seguro que desea anular la guia de remisión Nro: " + TxtNumGuiaRemision.Text + ".?", "Guia de remisión", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                //****************************** anular guia *****************************************

                #region Crear Tablas
                //tabla para actualizar el nuevo stock (agregar productos recepcionados)
                DataTable DtActuStockLocal = new DataTable();
                DtActuStockLocal.TableName = "StockAlmacen";
                DtActuStockLocal.Columns.Add("NumRequerimiento", typeof(string));
                DtActuStockLocal.Columns.Add("AlmacenID", typeof(string));
                DtActuStockLocal.Columns.Add("ProductoID", typeof(string));
                DtActuStockLocal.Columns.Add("StockAdicion", typeof(decimal));
                #endregion

                //actualizar datos del requerimiento
                CL_Requerimientos ObjCL_Requerimientos = new CL_Requerimientos();
                CL_GuiaRemision   ObjCL_GuiaRemision   = new CL_GuiaRemision();

                foreach (DataRow Row2 in DtDetalle.Rows)
                {
                    #region Actualizar Estado Requerimientos
                    string  NumRequerimiento;
                    decimal CantidadTransito;
                    string  ProductoID;


                    NumRequerimiento = Row2["NumRequerimiento"].ToString();
                    ProductoID       = Row2["ProductoID"].ToString();
                    CantidadTransito = Convert.ToDecimal(Row2["CantidadEnviada"]);

                    bool Valor;

                    Valor = ObjCL_Requerimientos.UpdateDetalleRequerimientoAnulado(NumRequerimiento, CantidadTransito, ProductoID, AppSettings.UserID, AppSettings.SedeID);

                    if (Valor == false)
                    {
                        MessageBox.Show("ocurrio un error al intentar actualizar el requerimiento: \r\nNumRequerimiento: " + NumRequerimiento + "ProductoID: " + ProductoID + "\r\nCantidadTransito: " + CantidadTransito, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }

                    Valor = ObjCL_GuiaRemision.UpdateGuiaRemisionEstado(TxtGuia.Text, 10, "A", AppSettings.UserID, AppSettings.SedeID);
                    #endregion

                    #region llenar tabla para actualizar el stock local
                    DataRow DrR = DtActuStockLocal.NewRow();
                    DrR["NumRequerimiento"] = Row2["NumRequerimiento"];
                    DrR["AlmacenID"]        = AppSettings.EmpresaID + AppSettings.SedeID + "000";
                    DrR["ProductoID"]       = Row2["ProductoID"];
                    DrR["StockAdicion"]     = Row2["CantidadEnviada"];
                    DtActuStockLocal.Rows.Add(DrR);
                    #endregion
                }

                #region agrupar para actualizar el stock local
                //Agrupar los productos apra almacenarlos
                DataTable DtProducto        = new DataTable();
                DataTable DtActuStockLocal2 = new DataTable();
                DtActuStockLocal2.TableName = "StockAlmacen";
                DtActuStockLocal2.Columns.Add("NumRequerimiento", typeof(string));
                DtActuStockLocal2.Columns.Add("AlmacenID", typeof(string));
                DtActuStockLocal2.Columns.Add("ProductoID", typeof(string));
                DtActuStockLocal2.Columns.Add("StockAdicion", typeof(decimal));
                DtProducto = new BaseFunctions().SelectDistinct(DtActuStockLocal, "ProductoID", "AlmacenID");
                foreach (DataRow RowP in DtProducto.Rows)
                {
                    DataView Dv = new DataView(DtActuStockLocal);
                    Dv.RowFilter = "ProductoID = '" + RowP["ProductoID"] + "' and AlmacenID = '" + RowP["AlmacenID"] + "'";
                    decimal Suma             = 0;
                    string  NumRequerimiento = "";
                    foreach (DataRowView Drv in Dv) //sumar las cantidades por producto
                    {
                        Suma            += Convert.ToDecimal(Drv["StockAdicion"]);
                        NumRequerimiento = Drv["NumRequerimiento"].ToString();
                    }
                    DataRow DrR = DtActuStockLocal2.NewRow();
                    DrR["NumRequerimiento"] = NumRequerimiento;
                    DrR["AlmacenID"]        = RowP["AlmacenID"];
                    DrR["ProductoID"]       = RowP["ProductoID"];
                    DrR["StockAdicion"]     = Suma;
                    DtActuStockLocal2.Rows.Add(DrR);
                }

                #endregion
                #region Actualizar el stock
                CL_Almacen ObjCL_Almacen = new CL_Almacen();

                foreach (DataRow R in DtActuStockLocal2.Rows)
                {
                    ObjCL_Almacen.UpdateStockAdidion(R["AlmacenID"].ToString(), R["ProductoID"].ToString(), Convert.ToDecimal(R["StockAdicion"]), R["NumRequerimiento"].ToString(), "R");
                }
                #endregion
            }

            MessageBox.Show("Se termino de anular la guía", "Guia remitente", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
Ejemplo n.º 2
0
        private void CrearHojaDespacho()
        {
            //obtener el distinct de las facturas para crear guias de remitente y de transportista
            DtFacturas = new DataTable();
            DtFacturas = new BaseFunctions().SelectDistinct(DetallesRequerimientos, "Factura");

            //calcular el total del peso enviado
            for (int i = 0; i < this.TdgDetalleHojaDespacho.Splits[0].Rows.Count; i++)
            {
                if (this.TdgDetalleHojaDespacho.Columns[2].CellValue(i) != DBNull.Value)
                {
                    PesoTotal += Convert.ToInt32(this.TdgDetalleHojaDespacho.Columns[10].CellValue(i));
                }
            }

            #region crear tablas
            //Insertar Hoja de despacho
            E_HojaDespacho ObjHojaDespacho = new E_HojaDespacho();
            ObjHojaDespacho.EmpresaID         = AppSettings.EmpresaID;
            ObjHojaDespacho.EmpresaTransporte = EmpresaTransporte;
            ObjHojaDespacho.NombreChofer      = NomTransportista;
            ObjHojaDespacho.placa             = TxtPlaca.Text;
            ObjHojaDespacho.Carrosa           = TxtCarrosa.Text;
            ObjHojaDespacho.FechaLlegada      = Convert.ToDateTime(DeFechaLlegada.Value);
            ObjHojaDespacho.FechaSalida       = Convert.ToDateTime(DeFechaSalida.Value);
            ObjHojaDespacho.NumJabas          = 0;
            ObjHojaDespacho.PesoTotal         = PesoTotal;
            ObjHojaDespacho.PesoNeto          = 0;
            ObjHojaDespacho.TotalAnimales     = 0;
            ObjHojaDespacho.TaraTotal         = 0;
            ObjHojaDespacho.UsuarioID         = AppSettings.UserID;

            NumHojaDespacho = new CL_HojaDespacho().InsertHojaDespacho(ObjHojaDespacho, AppSettings.SedeID);

            //Tabla para insertar el detalle de la hoja de despacho
            DetalleHojaDespacho           = new DataTable();
            DetalleHojaDespacho.TableName = "DetalleHojaDespacho";
            DetalleHojaDespacho.Columns.Add("ProductoID", typeof(string));
            DetalleHojaDespacho.Columns.Add("NumHojaDespacho", typeof(string));
            DetalleHojaDespacho.Columns.Add("NumGuiaRemision", typeof(string));
            DetalleHojaDespacho.Columns.Add("NumRequerimiento", typeof(string));
            DetalleHojaDespacho.Columns.Add("NroFactura", typeof(string));
            DetalleHojaDespacho.Columns.Add("TotalPeso", typeof(decimal));
            DetalleHojaDespacho.Columns.Add("Motivo", typeof(string));
            DetalleHojaDespacho.Columns.Add("NumGuiaTransportista", typeof(string));
            DetalleHojaDespacho.Columns.Add("Bultos", typeof(string));
            DetalleHojaDespacho.Columns.Add("IDProveedor", typeof(int));

            //Tabla para Mostrar Hoja de despacho
            DetalleHojaDespacho2           = new DataTable();
            DetalleHojaDespacho2.TableName = "DetalleHojaDespacho2";
            DetalleHojaDespacho2.Columns.Add("Proveedor", typeof(string));
            DetalleHojaDespacho2.Columns.Add("NroFactura", typeof(string));
            DetalleHojaDespacho2.Columns.Add("NumGuiaRemision", typeof(string));
            DetalleHojaDespacho2.Columns.Add("NumGuiaTransportista", typeof(string));
            DetalleHojaDespacho2.Columns.Add("Producto", typeof(string));
            DetalleHojaDespacho2.Columns.Add("TotalPeso", typeof(decimal));
            DetalleHojaDespacho2.Columns.Add("Bultos", typeof(string));
            #endregion

            foreach (DataRow Row in DtFacturas.Rows)
            {
                NroFactura = Row["Factura"].ToString();

                //filtrar tabla para obtener los datos relacionados a la factura y asi crear las guias de remision
                DataView DvDetallesRequerimientos = new DataView(DetallesRequerimientos);
                DvDetallesRequerimientos.RowFilter = "Factura = '" + NroFactura + "'";
                DataTable DtRequerimientos;
                DtRequerimientos = DvDetallesRequerimientos.ToTable();
                DtRequerimientos.DefaultView.Sort = "Producto";


                try
                {
                    #region crear tablas
                    //detalles de guia de remision
                    DetalleGuiaRemision           = new DataTable();
                    DetalleGuiaRemision.TableName = "DetalleGuiaRemision";
                    DetalleGuiaRemision.Columns.Add("NumGuiaRemision", typeof(string));
                    DetalleGuiaRemision.Columns.Add("ProductoID", typeof(string));
                    DetalleGuiaRemision.Columns.Add("NumRequerimiento", typeof(string));
                    DetalleGuiaRemision.Columns.Add("PesoNeto", typeof(decimal));
                    DetalleGuiaRemision.Columns.Add("PesoTara", typeof(decimal));
                    DetalleGuiaRemision.Columns.Add("CantidadEnviada", typeof(decimal));
                    DetalleGuiaRemision.Columns.Add("CantidadRecibida", typeof(decimal));
                    DetalleGuiaRemision.Columns.Add("EstadoID", typeof(int));

                    //detalles de guia de transporte
                    DetalleGuiaTransporte           = new DataTable();
                    DetalleGuiaTransporte.TableName = "DetalleGuiaTransportista";
                    DetalleGuiaTransporte.Columns.Add("NumGuiaTransportista", typeof(string));
                    DetalleGuiaTransporte.Columns.Add("ProductoID", typeof(string));
                    DetalleGuiaTransporte.Columns.Add("NumRequerimiento", typeof(string));
                    DetalleGuiaTransporte.Columns.Add("PesoNeto", typeof(decimal));
                    DetalleGuiaTransporte.Columns.Add("PesoTara", typeof(decimal));
                    DetalleGuiaTransporte.Columns.Add("CantidadEnviada", typeof(decimal));

                    //tabla para actualizar el estado del requerimiento
                    DataTable DtActuEstadoReq = new DataTable();
                    DtActuEstadoReq.TableName = "DetalleRequerimiento";
                    DtActuEstadoReq.Columns.Add("NumRequerimiento", typeof(string));
                    DtActuEstadoReq.Columns.Add("CantidadTransito", typeof(decimal));
                    DtActuEstadoReq.Columns.Add("ProductoID", typeof(string));
                    DtActuEstadoReq.Columns.Add("EstadoID", typeof(int));
                    #endregion

                    NumGuiaRemision = CrearGuiaRemitente();

                    //se crea guia de transportista si solo si el camion no pertenece a la empresa de destino
                    if ((AppSettings.EmpresaID != CamionEmpresaID) && CamionEmpresaID != "EX")
                    {
                        NumGuiaTransportista = CrearGuiaTransporte();
                    }
                    else
                    {
                        NumGuiaTransportista = ""; //no necesita guia de transporte
                    }
                    int Cantidad = 0;              //contador que indicara si la cantidad de productos no sean mayor de 12 (lo que puede contener la guia)
                    foreach (DataRow Row2 in DtRequerimientos.Rows)
                    {
                        Cantidad++;

                        if (Cantidad > 12)
                        {
                            Cantidad = 1;
                            //se crea guia de transportista si solo si el camion no pertenece a la empresa de destino
                            if ((AppSettings.EmpresaID != CamionEmpresaID) && CamionEmpresaID != "EX")
                            {
                                NumGuiaTransportista = CrearGuiaTransporte();
                            }
                            else
                            {
                                NumGuiaTransportista = ""; //no necesita guia de transporte
                            }
                            NumGuiaRemision = CrearGuiaRemitente();
                        }

                        if (Row2["Anular"] == DBNull.Value || Row2["Anular"].ToString() == "False")
                        {
                            //analizar el stock y si se logro la actualizacion crear las guias
                            bool Actualizo = false;                          //'9-' indica que es guia remitente
                            //es para kardex
                            if (Row2["TipoRequerimiento"].ToString() == "C") //en compras baja el stock local y el disponible
                            {
                                Actualizo = new CL_Almacen().UpdateStockSustraccion(Row2["AlmacenID"].ToString(), Convert.ToString(Row2["SProductoID"]), Convert.ToDecimal(Row2["CantidadDespachada"]), "D", AppSettings.EmpresaID + CboSedeDestino.SelectedValue.ToString() + Row2["AlmacenID"].ToString().Substring(7), 2, "09", NumGuiaRemision.Substring(2, 3), Convert.ToInt32(NumGuiaRemision.Substring(6)), "11", AppSettings.UserID);
                            }
                            else if (Row2["TipoRequerimiento"].ToString() == "T")//en transferencia solo baja el stock local
                            {
                                Actualizo = new CL_Almacen().UpdateStockSustraccion(Row2["AlmacenID"].ToString(), Convert.ToString(Row2["SProductoID"]), Convert.ToDecimal(Row2["CantidadDespachada"]), "S", AppSettings.EmpresaID + CboSedeDestino.SelectedValue.ToString() + Row2["AlmacenID"].ToString().Substring(7), 2, "09", NumGuiaRemision.Substring(2, 3), Convert.ToInt32(NumGuiaRemision.Substring(6)), "11", AppSettings.UserID);
                            }

                            if (Actualizo == true)
                            {
                                //para detalle guia remision
                                DataRow RowGR = DetalleGuiaRemision.NewRow();
                                RowGR["NumGuiaRemision"]  = NumGuiaRemision;
                                RowGR["ProductoID"]       = Row2["SProductoID"];
                                RowGR["NumRequerimiento"] = Row2["NumRequerimiento"];
                                RowGR["PesoNeto"]         = Row2["PesoTotal"];
                                RowGR["PesoTara"]         = 0;
                                RowGR["CantidadEnviada"]  = Row2["CantidadDespachada"];
                                RowGR["CantidadRecibida"] = DBNull.Value;
                                RowGR["EstadoID"]         = 2;
                                DetalleGuiaRemision.Rows.Add(RowGR);

                                //para detalle guia transporte
                                if (NumGuiaTransportista != "")
                                {
                                    DataRow RowGT = DetalleGuiaTransporte.NewRow();
                                    RowGT["NumGuiaTransportista"] = NumGuiaTransportista;
                                    RowGT["ProductoID"]           = Row2["SProductoID"];
                                    RowGT["NumRequerimiento"]     = Row2["NumRequerimiento"];
                                    RowGT["PesoNeto"]             = Row2["PesoTotal"];
                                    RowGT["PesoTara"]             = 0;
                                    RowGT["CantidadEnviada"]      = Row2["CantidadDespachada"];
                                    DetalleGuiaTransporte.Rows.Add(RowGT);
                                }
                                //para estado requerimiento
                                DataRow RowD2 = DtActuEstadoReq.NewRow();
                                RowD2["ProductoID"]       = Row2["ProductoID"];
                                RowD2["NumRequerimiento"] = Row2["NumRequerimiento"];

                                //identificar el estado actual del requerimiento
                                if (AppSettings.SedeID == "001PU")
                                {
                                    if (Convert.ToDecimal(Row2["CantidadRecibida"]) + Convert.ToDecimal(Row2["CantidadDespachada"]) == Convert.ToDecimal(Row2["CantidadSolicitada"]))
                                    {
                                        //transito DESTINO total
                                        RowD2["EstadoID"] = 9;
                                    }
                                    else if (Convert.ToDecimal(Row2["CantidadRecibida"]) + Convert.ToDecimal(Row2["CantidadDespachada"]) < Convert.ToDecimal(Row2["CantidadSolicitada"]))
                                    {
                                        //transito DESTINO parcial
                                        RowD2["EstadoID"] = 8;
                                    }

                                    /*siempre va a estar en transito porque la
                                     * transferencia es entre almacenes y no pasa por industria*/
                                    if (RBTransferencia.Checked == true)
                                    {
                                        RowD2["CantidadTransito"] = Row2["CantidadDespachada"];
                                    }

                                    /*en este caso sera "0" porque las compras vienen de lima*/
                                    if (RbCompras.Checked == true)
                                    {
                                        RowD2["CantidadTransito"] = 0;
                                    }
                                }
                                else
                                {
                                    if (Convert.ToDecimal(Row2["CantidadRecibida"]) + Convert.ToDecimal(Row2["CantidadTransito"]) + Convert.ToDecimal(Row2["CantidadDespachada"]) == Convert.ToDecimal(Row2["CantidadSolicitada"]))
                                    {
                                        //transito total
                                        RowD2["EstadoID"] = 2;
                                    }
                                    else if (Convert.ToDecimal(Row2["CantidadRecibida"]) + Convert.ToDecimal(Row2["CantidadTransito"]) + Convert.ToDecimal(Row2["CantidadDespachada"]) < Convert.ToDecimal(Row2["CantidadSolicitada"]))
                                    {
                                        //transito parcial
                                        RowD2["EstadoID"] = 6;
                                    }
                                    RowD2["CantidadTransito"] = Row2["CantidadDespachada"];
                                }
                                DtActuEstadoReq.Rows.Add(RowD2);

                                //para detalle hoja despacho
                                DataRow RowHD = DetalleHojaDespacho.NewRow();
                                RowHD["ProductoID"]           = Row2["SProductoID"];
                                RowHD["NumHojaDespacho"]      = NumHojaDespacho;
                                RowHD["NumGuiaRemision"]      = NumGuiaRemision;
                                RowHD["NumRequerimiento"]     = Row2["NumRequerimiento"];
                                RowHD["NroFactura"]           = Row2["Factura"];
                                RowHD["TotalPeso"]            = Row2["PesoTotal"];
                                RowHD["Motivo"]               = Row2["Motivo"];
                                RowHD["NumGuiaTransportista"] = NumGuiaTransportista;
                                RowHD["Bultos"]               = Row2["Bultos"];
                                RowHD["IDProveedor"]          = Row2["IDProveedor"];
                                DetalleHojaDespacho.Rows.Add(RowHD);

                                //para detalle hoja despacho para presentar
                                DataRow RowHD2 = DetalleHojaDespacho2.NewRow();
                                RowHD2["Proveedor"]            = Row2["Proveedor"];
                                RowHD2["NroFactura"]           = Row2["Factura"];
                                RowHD2["NumGuiaRemision"]      = NumGuiaRemision;
                                RowHD2["NumGuiaTransportista"] = NumGuiaTransportista;
                                RowHD2["Producto"]             = Row2["Producto"];
                                RowHD2["TotalPeso"]            = Row2["PesoTotal"];
                                RowHD2["Bultos"] = Row2["Bultos"];
                                DetalleHojaDespacho2.Rows.Add(RowHD2);
                            }
                            else
                            {
                                MessageBox.Show("No existe Stock suficiente en el almacen " + Row2["AlmacenID"].ToString() + " del producto \r\n" + Row2["Producto"].ToString() + ".", "Stock Almacen", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                            }
                        }
                    }
                    #region Actualizar con Xml
                    //insertar detalles guia remision
                    if (DetalleGuiaRemision.Rows.Count > 0)
                    {
                        string xml = new BaseFunctions().GetXML(DetalleGuiaRemision).Replace("NewDataSet", "DocumentElement");
                        bool   Valor;
                        Valor = new CL_GuiaRemision().InsertXMLDetalleGuiaRemision(xml);
                        if (Valor == false)
                        {
                            MessageBox.Show("Ocurrio un error al intentar guardar el detalle de la Guía de Remisión", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }

                    //insertar detalle guia de transporte
                    if (DetalleGuiaTransporte.Rows.Count > 0)
                    {
                        string xml = new BaseFunctions().GetXML(DetalleGuiaTransporte).Replace("NewDataSet", "DocumentElement");
                        bool   Valor;
                        Valor = new CL_GuiaTransportista().InsertXMLDetalleGuiaTransporte(xml);
                        if (Valor == false)
                        {
                            MessageBox.Show("Ocurrio un error al intentar guardar el detalle de la Guía de Transporte", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }

                    //actualizar estado de los requerimientos
                    if (DtActuEstadoReq.Rows.Count > 0)
                    {
                        string xml = new BaseFunctions().GetXML(DtActuEstadoReq).Replace("NewDataSet", "DocumentElement");
                        bool   Valor;
                        Valor = new CL_Requerimientos().UpdateXMLDetalleRequerimientoEstado(xml, "E", AppSettings.UserID, AppSettings.SedeID);
                        if (Valor == false)
                        {
                            MessageBox.Show("Ocurrio un error al intentar actualizar el estado de los requerimientos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }

                    MessageBox.Show("Se guardo correctamente los datos", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    #endregion
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }//fin del foreach de las facturas

            //insertar los detalles de hoja de despacho

            if (DetalleHojaDespacho.Rows.Count > 0)
            {
                string xml = new BaseFunctions().GetXML(DetalleHojaDespacho).Replace("NewDataSet", "DocumentElement");
                bool   Valor;
                Valor = new CL_HojaDespacho().InsertXMLDetalleHojaDespacho(xml);
                if (Valor == false)
                {
                    MessageBox.Show("Ocurrio un error al intentar insertar los detalles de la hoja de despacho", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    TdgDetalleHoja.Visible = true;
                    TdgDetalleHoja.SetDataBinding(DetalleHojaDespacho2, "", true);
                }
            }
        }
Ejemplo n.º 3
0
        private void CboAlmacen_SelectedValueChanged(object sender, EventArgs e)
        {
            //limpiar tabla
            Cursor           = Cursors.WaitCursor;
            DtRequerimientos = new DataTable();
            DtTemp.Clear();

            //Traer los requerimientos

            CL_Requerimientos ObjRequerimientos = new CL_Requerimientos();

            AlmacenID        = CboAlmacen.SelectedValue.ToString();
            AlmacenIDLocal   = EmpresaIDUser + AppSettings.SedeID + AlmacenID.Substring(7, 3);
            EmpresaSedeLocal = AppSettings.EmpresaID + AppSettings.SedeID;

            if (AppSettings.SedeID == "001PU")// si la sede es "Industria" debe mostra los que estén en estado de industria
            {
                if (TipoRequerimiento == "C" && AlmacenID != "00000TODOS")
                {
                    DtRequerimientos = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "6,4,3,7", "CA", EmpresaSede, EmpresaSedeLocal);
                }
                else if (TipoRequerimiento == "C" && AlmacenID == "00000TODOS")
                {
                    DtRequerimientos = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "6,4,3,7", "CS", EmpresaSede, EmpresaSedeLocal);
                }
                else if (TipoRequerimiento == "T" && AlmacenID != "00000TODOS")
                {
                    DtRequerimientos = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "0,6,4,3,7", "TA", EmpresaSede, EmpresaSedeLocal);
                }
                else if (TipoRequerimiento == "T" && AlmacenID == "00000TODOS")
                {
                    DtRequerimientos = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "0,6,4,3,7", "TS", EmpresaSede, EmpresaSedeLocal);
                }

                /*else if (TipoRequerimiento == "A" && AlmacenID != "00000TODOS")
                 * {
                 *  DtRequerimientosC = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "6,4,3,7", "CA", EmpresaSede, EmpresaSedeLocal);
                 *  DtRequerimientosT = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "6,4,3,7", "TA", EmpresaSede, EmpresaSedeLocal);
                 *  DtRequerimientos.Merge(DtRequerimientosC);
                 *  DtRequerimientos.Merge(DtRequerimientosT);
                 * }
                 * else if (TipoRequerimiento == "A" && AlmacenID == "00000TODOS")
                 * {
                 *  DtRequerimientosC = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "6,4,3,7", "CS", EmpresaSede, EmpresaSedeLocal);
                 *  DtRequerimientosT = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "6,4,3,7", "TS", EmpresaSede, EmpresaSedeLocal);
                 *  DtRequerimientos.Merge(DtRequerimientosC);
                 *  DtRequerimientos.Merge(DtRequerimientosT);
                 * }*/
            }
            else if (AppSettings.SedeID == "001AL")// si la sede es "Lima" debe mostrar planeado, industriaparcial, transito parcial, transito  destino parcial
            {
                if (TipoRequerimiento == "C" && AlmacenID != "00000TODOS")
                {
                    DtRequerimientos = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "1,6,4,3", "CA", EmpresaSede, EmpresaSedeLocal);
                }
                else if (TipoRequerimiento == "C" && AlmacenID == "00000TODOS")
                {
                    DtRequerimientos = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "1,6,4,3", "CS", EmpresaSede, EmpresaSedeLocal);
                }
                else if (TipoRequerimiento == "T" && AlmacenID != "00000TODOS")
                {
                    DtRequerimientos = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "0,6,4,3", "TA", EmpresaSede, EmpresaSedeLocal);
                }
                else if (TipoRequerimiento == "T" && AlmacenID == "00000TODOS")
                {
                    DtRequerimientos = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "0,6,4,3", "TS", EmpresaSede, EmpresaSedeLocal);
                }

                /*else if (TipoRequerimiento == "A" && AlmacenID != "00000TODOS")
                 * {
                 *  DtRequerimientosC = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "0,6,4,3", "CA", EmpresaSede, EmpresaSedeLocal);
                 *  DtRequerimientosT = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "0,6,4,3", "TA", EmpresaSede, EmpresaSedeLocal);
                 *  DtRequerimientos.Merge(DtRequerimientosC);
                 *  DtRequerimientos.Merge(DtRequerimientosT);
                 * }
                 * else if (TipoRequerimiento == "A" && AlmacenID == "00000TODOS")
                 * {
                 *  DtRequerimientosC = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "0,6,4,3", "CS", EmpresaSede, EmpresaSedeLocal);
                 *  DtRequerimientosT = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "0,6,4,3", "TS", EmpresaSede, EmpresaSedeLocal);
                 *  DtRequerimientos.Merge(DtRequerimientosC);
                 *  DtRequerimientos.Merge(DtRequerimientosT);
                 * }*/
            }
            else //los demas
            {
                if (TipoRequerimiento == "C" && AlmacenID != "00000TODOS")
                {
                    DtRequerimientos = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "1,4,6", "CA", EmpresaSede, EmpresaSedeLocal);
                }
                else if (TipoRequerimiento == "C" && AlmacenID == "00000TODOS")
                {
                    DtRequerimientos = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "1,4,6", "CS", EmpresaSede, EmpresaSedeLocal);
                }
                else if (TipoRequerimiento == "T" && AlmacenID != "00000TODOS")
                {
                    DtRequerimientos = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "0,4,6", "TA", EmpresaSede, EmpresaSedeLocal);
                }
                else if (TipoRequerimiento == "T" && AlmacenID == "00000TODOS")
                {
                    DtRequerimientos = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "0,4,6", "TS", EmpresaSede, EmpresaSedeLocal);
                }

                /*else if (TipoRequerimiento == "A" && AlmacenID != "00000TODOS")
                 * {
                 *  DtRequerimientosC = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "0,4,6", "CA", EmpresaSede, EmpresaSedeLocal);
                 *  DtRequerimientosT = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "0,4,6", "TA", EmpresaSede, EmpresaSedeLocal);
                 *  DtRequerimientos.Merge(DtRequerimientosC);
                 *  DtRequerimientos.Merge(DtRequerimientosT);
                 * }
                 * else if (TipoRequerimiento == "A" && AlmacenID == "00000TODOS")
                 * {
                 *  DtRequerimientosC = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "0,4,6", "CS", EmpresaSede, EmpresaSedeLocal);
                 *  DtRequerimientosT = ObjRequerimientos.GetRequerimientos(AlmacenID, AlmacenIDLocal, "0,4,6", "TS", EmpresaSede, EmpresaSedeLocal);
                 *  DtRequerimientos.Merge(DtRequerimientosC);
                 *  DtRequerimientos.Merge(DtRequerimientosT);
                 * }*/
            }

            //cruzar datos de la tabla detalles de hoja de despacho para que no se muestren
            CruzarDatos();
            Cursor = Cursors.Default;
        }
Ejemplo n.º 4
0
        public string DespachoInterno(DataTable DtProductosDespacho, int UsuarioID, string Empresa, string NomEmpresa, string Sede)
        {
            string    NumHojaDespacho;
            string    NumGuiaRemision;
            string    NumGuiaTransportista;
            DataTable DetalleHojaDespacho = new DataTable();

            #region crear tablas
            //Insertar Hoja de despacho
            E_HojaDespacho ObjHojaDespacho = new E_HojaDespacho();
            ObjHojaDespacho.EmpresaID         = Empresa;
            ObjHojaDespacho.EmpresaTransporte = NomEmpresa;
            ObjHojaDespacho.NombreChofer      = "Sin chofer";
            ObjHojaDespacho.placa             = "Sin Placa";
            ObjHojaDespacho.Carrosa           = null;
            ObjHojaDespacho.FechaLlegada      = DateTime.Now;
            ObjHojaDespacho.FechaSalida       = DateTime.Now;
            ObjHojaDespacho.NumJabas          = 0;
            ObjHojaDespacho.PesoTotal         = 0;
            ObjHojaDespacho.PesoNeto          = 0;
            ObjHojaDespacho.TotalAnimales     = 0;
            ObjHojaDespacho.TaraTotal         = 0;
            ObjHojaDespacho.UsuarioID         = UsuarioID;

            NumHojaDespacho = new CL_HojaDespacho().InsertHojaDespacho(ObjHojaDespacho, Sede);

            //Tabla para insertar el detalle de la hoja de despacho
            DetalleHojaDespacho           = new DataTable();
            DetalleHojaDespacho.TableName = "DetalleHojaDespacho";
            DetalleHojaDespacho.Columns.Add("ProductoID", typeof(string));
            DetalleHojaDespacho.Columns.Add("NumHojaDespacho", typeof(string));
            DetalleHojaDespacho.Columns.Add("NumGuiaRemision", typeof(string));
            DetalleHojaDespacho.Columns.Add("NumRequerimiento", typeof(string));
            DetalleHojaDespacho.Columns.Add("NroFactura", typeof(string));
            DetalleHojaDespacho.Columns.Add("TotalPeso", typeof(decimal));
            DetalleHojaDespacho.Columns.Add("Motivo", typeof(string));
            DetalleHojaDespacho.Columns.Add("NumGuiaTransportista", typeof(string));
            DetalleHojaDespacho.Columns.Add("Bultos", typeof(string));
            DetalleHojaDespacho.Columns.Add("IDProveedor", typeof(int));

            #endregion


            try
            {
                #region crear tablas
                //tabla para actualizar el estado del requerimiento
                DataTable DtActuEstadoReq = new DataTable();
                DtActuEstadoReq.TableName = "DetalleRequerimiento";
                DtActuEstadoReq.Columns.Add("NumRequerimiento", typeof(string));
                DtActuEstadoReq.Columns.Add("ProductoID", typeof(string));
                DtActuEstadoReq.Columns.Add("CantidadRecibida", typeof(decimal));
                DtActuEstadoReq.Columns.Add("EstadoID", typeof(int));

                //tabla para actualizar el nuevo stock (agregar productos recepcionados)
                DataTable DtActuStockLocal = new DataTable();
                DtActuStockLocal.TableName = "StockAlmacen";
                DtActuStockLocal.Columns.Add("AlmacenID", typeof(string));
                DtActuStockLocal.Columns.Add("ProductoID", typeof(string));
                DtActuStockLocal.Columns.Add("Adicion", typeof(decimal));
                #endregion

                NumGuiaRemision = Empresa + "PRO-0000001";

                NumGuiaTransportista = "";

                foreach (DataRow Row2 in DtProductosDespacho.Rows)
                {
                    if (Convert.ToBoolean(Row2["Agregar"]) == true)
                    {
                        //analizar el stock y si se logro la actualizacion crear las guias
                        bool Actualizo = false;
                        //mueve kardex
                        //50 es para "GUIA SALIDA PRODUCCION"
                        Actualizo = new CL_Almacen().UpdateStockSustraccion(Row2["AlmacenOrigen"].ToString(), Convert.ToString(Row2["ProductoID"]), Convert.ToDecimal(Row2["CantidadSolicitada"]), "S", Empresa + Sede + "PRO", 2, "50", "PRO", null, "10", UsuarioID);
                        if (Actualizo == true)
                        {
                            //para estado requerimiento
                            DataRow RowD2 = DtActuEstadoReq.NewRow();
                            RowD2["NumRequerimiento"] = Row2["NumRequerimiento"];
                            RowD2["ProductoID"]       = Row2["ProductoID"];
                            RowD2["CantidadRecibida"] = Row2["CantidadSolicitada"];
                            RowD2["EstadoID"]         = 5; //Recepcion completa
                            DtActuEstadoReq.Rows.Add(RowD2);

                            //para detalle hoja despacho
                            DataRow RowHD = DetalleHojaDespacho.NewRow();
                            RowHD["ProductoID"]           = Row2["ProductoID"];
                            RowHD["NumHojaDespacho"]      = NumHojaDespacho;
                            RowHD["NumGuiaRemision"]      = NumGuiaRemision;
                            RowHD["NumRequerimiento"]     = Row2["NumRequerimiento"];
                            RowHD["NroFactura"]           = "";
                            RowHD["TotalPeso"]            = DBNull.Value;
                            RowHD["Motivo"]               = Row2["Observacion"];
                            RowHD["NumGuiaTransportista"] = NumGuiaTransportista;
                            RowHD["Bultos"]               = Row2["CantidadSolicitada"].ToString() + " " + Row2["UnidadMedidaID"].ToString();
                            RowHD["IDProveedor"]          = DBNull.Value;
                            DetalleHojaDespacho.Rows.Add(RowHD);

                            #region actualiza el stock local
                            DataRow DrR = DtActuStockLocal.NewRow();
                            DrR["AlmacenID"]  = Row2["AlmacenDestino"];
                            DrR["ProductoID"] = Row2["ProductoID"];
                            DrR["Adicion"]    = Row2["CantidadSolicitada"];
                            DtActuStockLocal.Rows.Add(DrR);
                            #endregion
                        }
                        else
                        {
                            throw new Exception("No existe Stock suficiente en el almacen " + Row2["AlmacenOrigen"].ToString() + " del producto \r\n" + Row2["NomProducto"].ToString() + ".");
                        }
                    }
                }//fin foreach

                #region agrupar para actualizar el stock local
                //Agrupar los productos apra almacenarlos
                DataTable DtProducto        = new DataTable();
                DataTable DtActuStockLocal2 = new DataTable();
                DtActuStockLocal2.TableName = "StockAlmacen";
                DtActuStockLocal2.Columns.Add("AlmacenID", typeof(string));
                DtActuStockLocal2.Columns.Add("AlmacenOrigen", typeof(string));
                DtActuStockLocal2.Columns.Add("ProductoID", typeof(string));
                DtActuStockLocal2.Columns.Add("Adicion", typeof(decimal));
                DtActuStockLocal2.Columns.Add("NroDocumento", typeof(string));
                DtProducto = new BaseFunctions().SelectDistinct(DtActuStockLocal, "ProductoID", "AlmacenID");
                foreach (DataRow RowP in DtProducto.Rows)
                {
                    DataView Dv = new DataView(DtActuStockLocal);
                    Dv.RowFilter = "ProductoID = '" + RowP["ProductoID"] + "' and AlmacenID = '" + RowP["AlmacenID"] + "'";
                    decimal Suma = 0;
                    foreach (DataRowView Drv in Dv) //sumar las cantidades por producto
                    {
                        Suma += Convert.ToDecimal(Drv["Adicion"]);
                    }
                    DataRow DrR = DtActuStockLocal2.NewRow();
                    DrR["AlmacenID"]     = RowP["AlmacenID"];
                    DrR["AlmacenOrigen"] = Empresa + Sede + RowP["AlmacenID"].ToString().Substring(7);
                    DrR["ProductoID"]    = RowP["ProductoID"];
                    DrR["Adicion"]       = Suma;
                    DrR["NroDocumento"]  = NumHojaDespacho;
                    DtActuStockLocal2.Rows.Add(DrR);
                }

                #endregion

                #region Actualizar con Xml

                //actualizar estado de los requerimientos
                if (DtActuEstadoReq.Rows.Count > 0 & DtActuStockLocal2.Rows.Count > 0 & DetalleHojaDespacho.Rows.Count > 0)
                {
                    bool   Valor;
                    string xml = new BaseFunctions().GetXML(DtActuEstadoReq).Replace("NewDataSet", "DocumentElement");
                    Valor = new CL_Requerimientos().UpdateXMLDetalleRequerimientoEstado(xml, "I", UsuarioID, Sede);//interno
                    string xml1 = new BaseFunctions().GetXML(DtActuStockLocal2).Replace("NewDataSet", "DocumentElement");
                    Valor = new CL_Almacen().UpdateXMLStockAlmacen(xml1, 4, UsuarioID);
                    string xml2 = new BaseFunctions().GetXML(DetalleHojaDespacho).Replace("NewDataSet", "DocumentElement");
                    Valor = new CL_HojaDespacho().InsertXMLDetalleHojaDespacho(xml2);
                }
                #endregion

                return(NumHojaDespacho);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }