Esempio n. 1
0
        private void FrmHojaDespacho_Load(object sender, EventArgs e)
        {
            try
            {
                CrystalReports.CrHojaDespacho rpt = new CrystalReports.CrHojaDespacho();
                DataSet   DS = new DatasetReportes.DsHojaDespacho();
                DataTable Usp_GetCabeceraHojaDespacho = new DataTable();
                Usp_GetCabeceraHojaDespacho = new CL_HojaDespacho().GetCabeceraHojaDespacho(NumHojaDespacho);

                DataTable Usp_GetDetalleHojaDespacho = new DataTable();
                Usp_GetDetalleHojaDespacho = new CL_HojaDespacho().GetDetalleHojaDespacho(NumHojaDespacho);

                DS.Tables["Usp_GetCabeceraHojaDespacho"].Merge(Usp_GetCabeceraHojaDespacho);
                DS.Tables["Usp_GetDetalleHojaDespacho"].Merge(Usp_GetDetalleHojaDespacho);

                rpt.SetDataSource(DS);
                //Establecemos los datos al reporte
                this.CrvHojaDespacho.ReportSource = rpt;
                //Refrescamos nuestro reporte
                this.CrvHojaDespacho.RefreshReport();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Esempio n. 2
0
        private void BtnMostrar_Click(object sender, EventArgs e)
        {
            try
            {
                NumHojaDespacho = TxtBuscar.Text;
                PnlBuscarHojaDespacho.Visible = false;
                DataTable GetDetalleHojaDespacho = new DataTable();
                GetDetalleHojaDespacho = new CL_HojaDespacho().GetDetalleHojaDespacho(TxtBuscar.Text);

                if (GetDetalleHojaDespacho.Rows.Count > 0)
                {
                    TdgDetalleHoja.Visible = true;

                    //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));

                    //para detalle hoja despacho para presentar
                    DataRow RowHD2 = DetalleHojaDespacho2.NewRow();
                    RowHD2["Proveedor"]            = "";
                    RowHD2["NroFactura"]           = "";
                    RowHD2["NumGuiaRemision"]      = GetDetalleHojaDespacho.Rows[0]["NumGuiaRemision"];
                    RowHD2["NumGuiaTransportista"] = GetDetalleHojaDespacho.Rows[0]["NumGuiaTransportista"];
                    RowHD2["Producto"]             = GetDetalleHojaDespacho.Rows[0]["NomProducto"];
                    RowHD2["TotalPeso"]            = GetDetalleHojaDespacho.Rows[0]["TotalPeso"];
                    RowHD2["Bultos"] = GetDetalleHojaDespacho.Rows[0]["Bultos"];
                    DetalleHojaDespacho2.Rows.Add(RowHD2);

                    TdgDetalleHoja.SetDataBinding(DetalleHojaDespacho2, "", true);
                }
                else
                {
                    MessageBox.Show("No existe Hoja de despacho con ese codigo", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    PnlBuscarHojaDespacho.Visible = false;
                    TdgDetalleHoja.Visible        = false;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Esempio n. 3
0
        private void BtnGenerarHojaDespacho_Click(object sender, EventArgs e)
        {
            if (DtGuias.Rows.Count > 0)
            {
                BtnGenerarHojaDespacho.Visible = false;
                BtnNuevo.Visible   = false;
                BtnGrabar.Visible  = false;
                BtnBalanza.Visible = false;
                RbPeso.Visible     = false;
                RbTara.Visible     = false;
                #region inserta hoja de despacho y se obtiene el codigo

                //Insertar Hoja de despacho
                E_HojaDespacho ObjHojaDespacho = new E_HojaDespacho();
                ObjHojaDespacho.EmpresaID         = EmpresaIDUser;
                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          = NroJabasTotal;
                ObjHojaDespacho.PesoTotal         = BrutoTotal;
                ObjHojaDespacho.PesoNeto          = NetoTotal;
                ObjHojaDespacho.TotalAnimales     = Cantidad;
                ObjHojaDespacho.TaraTotal         = TaraTotal;
                ObjHojaDespacho.UsuarioID         = AppSettings.UserID;

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

                #region crear tablas
                //Tabla para insertar el detalle de la hoja de despacho
                DataTable 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

                //para detalle hoja despacho
                foreach (DataRow Row2 in DtGuias.Rows)
                {
                    DataRow RowHD = DetalleHojaDespacho.NewRow();
                    RowHD["ProductoID"]           = Row2["ProductoID"];
                    RowHD["NumHojaDespacho"]      = NumHojaDespacho;
                    RowHD["NumGuiaRemision"]      = Row2["NumGuiaRemision"];
                    RowHD["NumRequerimiento"]     = Row2["NumRequerimiento"];
                    RowHD["NroFactura"]           = Row2["NroFactura"];
                    RowHD["TotalPeso"]            = Row2["TotalPeso"];
                    RowHD["Motivo"]               = Row2["Motivo"];
                    RowHD["NumGuiaTransportista"] = Row2["NumGuiaTransportista"];
                    RowHD["Bultos"]               = Row2["Bultos"];
                    RowHD["IDProveedor"]          = Row2["IDProveedor"];
                    DetalleHojaDespacho.Rows.Add(RowHD);
                }


                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);
                    }
                }

                //mostrar en reporte
                Reportes.FrmHojaDespacho ObjFrmHojaD = new Reportes.FrmHojaDespacho();
                ObjFrmHojaD.NumHojaDespacho = NumHojaDespacho;
                ObjFrmHojaD.ShowDialog();
            }
            else
            {
                MessageBox.Show("No se ha creado aún alguna guia.", "Hoja de despacho", MessageBoxButtons.OK, MessageBoxIcon.Stop);
            }
        }
Esempio n. 4
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);
                }
            }
        }
Esempio n. 5
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);
            }
        }