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