public void Configurar() { dtOrdenCompra = new DataTable(); dtOrdenCompra.Columns.Add("NumRequerimiento", typeof(string)); dtOrdenCompra.Columns.Add("ProductoID", typeof(string)); dtOrdenCompra.Columns.Add("Descripcion", typeof(string)); dtOrdenCompra.Columns.Add("UM", typeof(string)); dtOrdenCompra.Columns.Add("NomMarca", typeof(string)); dtOrdenCompra.Columns.Add("CantidadSolicitada", typeof(decimal)); dtOrdenCompra.Columns.Add("Costo", typeof(decimal)).DefaultValue = 0; dtOrdenCompra.Columns.Add("PorcIGV", typeof(decimal)).DefaultValue = 0; dtOrdenCompra.Columns.Add("Total", typeof(decimal)).DefaultValue = 0; dtOrdenCompra.Columns["Costo"].ReadOnly = false; dtOrdenCompra.Columns["PorcIGV"].ReadOnly = false; dtOrdenCompra.Columns["Total"].ReadOnly = false; this.C1tdbCompra.SetDataBinding(dtOrdenCompra, "", true); this.C1tdbCompra.ColumnFooters = true; //traer sedes de la empresa DataTable dtUnidadNegocio = new CL_Almacen().ObtenerAlmacen(AppSettings.EmpresaID); DataTable dtSede = new BaseFunctions().SelectDistinct(dtUnidadNegocio, "SedeID", "NomSede"); //agregar al combo sedes CboSedes.HoldFields(); CboSedes.DataSource = dtSede; CboSedes.DisplayMember = "NomSede"; CboSedes.ValueMember = "SedeID"; }
private void c1cboCia_SelectedValueChanged(object sender, EventArgs e) { DataTable DtAlmacenUsuario = new DataTable(); if (c1cboCia.SelectedValue != null && CboSede.SelectedValue != null) { //todos los almacenes DtAlmacenUsuario = new CL_Almacen().ObtenerAlmacen2(c1cboCia.SelectedValue.ToString(), CboSede.SelectedValue.ToString()); } CboAlmacen.HoldFields(); CboAlmacen.DataSource = DtAlmacenUsuario; CboAlmacen.DisplayMember = "Descripcion"; CboAlmacen.ValueMember = "AlmacenID"; }
private void CboSede_SelectedValueChanged(object sender, EventArgs e) { if (CboSede.SelectedIndex != -1) { DataTable DtAlmacenUsuario = new DataTable(); DtAlmacenUsuario = new CL_Almacen().ObtenerAlmacen2(EmpresaID, CboSede.SelectedValue.ToString()); CboAlmacen.HoldFields(); CboAlmacen.DataSource = DtAlmacenUsuario; CboAlmacen.DisplayMember = "Descripcion"; CboAlmacen.ValueMember = "AlmacenID"; CboAlmacen.Text = ""; CboProducto_SelectedValueChanged(null, null);//actualizar el almacen DtKardex.Rows.Clear(); } }
private void BtnActualizar_Click(object sender, EventArgs e) { try { Int32 FilasAfectadas = 0; CL_Almacen ObjCL_Almacen = new CL_Almacen(); FilasAfectadas = ObjCL_Almacen.UpdateStockAlmacen(CboAlmacen.SelectedValue.ToString(), CboProducto.SelectedValue.ToString(), Convert.ToDecimal(TxtCantidad.Text), Convert.ToDecimal(TxtStockDisponible.Text), Convert.ToDecimal(TxtStockMinimo.Text), Convert.ToDecimal(TxtStockMaximo.Text), AppSettings.UserID); if (FilasAfectadas == 1) { MessageBox.Show("se grabo correctamente", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information); } if (FilasAfectadas == 0)//no actualizo nada { MessageBox.Show("No se actulizo ningun Producto", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Hand); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void CargarUnidadNegocio(string EmpresaID) { try { DataTable dtUnidadNegocio = new CL_Almacen().ObtenerAlmacen(EmpresaID); DataTable dtSede = new BaseFunctions().SelectDistinct(dtUnidadNegocio, "SedeID", "NomSede"); foreach (DataRow drow in dtSede.Rows) { TreeNode _node = new TreeNode(); _node.Text = drow["NomSede"].ToString(); _node.Tag = drow["SedeID"].ToString(); _node.ImageIndex = 0; _node.StateImageIndex = 0; _node.SelectedImageIndex = 0; this.tvwAlmacen.Nodes.Add(_node); foreach (DataRow dRow in dtUnidadNegocio.Rows) { if (dRow["SedeID"].ToString() == drow["SedeID"].ToString()) { TreeNode _nodesf = new TreeNode(); _nodesf.Text = dRow["Descripcion"].ToString(); _nodesf.Tag = dRow["AlmacenID"].ToString(); _nodesf.ImageIndex = 1; _nodesf.SelectedImageIndex = 1; _nodesf.StateImageIndex = 1; _node.Nodes.Add(_nodesf); } } } } catch (Exception ex) { MessageBox.Show(ex.Message + "\nMetodo : List()", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void FrmIngresarOperacion_Load(object sender, EventArgs e) { //Crear tabla apra el kardex DtKardex = new DataTable("Kardex"); DtKardex.Columns.Add("AlmacenID", typeof(string)); DtKardex.Columns.Add("ProductoID", typeof(string)); DtKardex.Columns.Add("Producto", typeof(string)); DtKardex.Columns.Add("Cantidad", typeof(decimal)); DtKardex.Columns.Add("CostoUnitario", typeof(decimal)); DtKardex.Columns.Add("Almacen", typeof(string)); TdgProductos.SetDataBinding(DtKardex, "", true); //obtener todas las sedes DataTable Dtsedes = new CL_Empresas().GetSedes(); CboSede.HoldFields(); CboSede.DataSource = Dtsedes; CboSede.DisplayMember = "NomSede"; CboSede.ValueMember = "SedeID"; CboSede.SelectedIndex = 0; //obtener lista de productos DtProductos = new CL_Producto().GetProductos(); CboProducto.HoldFields(); CboProducto.DataSource = DtProductos; CboProducto.DisplayMember = "Alias"; CboProducto.ValueMember = "ProductoID"; if (ProductoID != null && ProductoID != "") { //seleccionar producto CboProducto.SelectedValue = ProductoID; } //traer los almacenes DataTable DtAlmacenUsuario = new DataTable(); DtAlmacenUsuario = new CL_Almacen().ObtenerAlmacen2(EmpresaID, CboSede.SelectedValue.ToString()); CboAlmacen.HoldFields(); CboAlmacen.DataSource = DtAlmacenUsuario; CboAlmacen.DisplayMember = "Descripcion"; CboAlmacen.ValueMember = "AlmacenID"; //Obtener Movimiento //CL_Kardex ObjCL_Kardex = new CL_Kardex(); //DTMovimiento = new DataTable(); //DTMovimiento = ObjCL_Kardex.GetMovimiento(); CboMovimiento.HoldFields(); CboMovimiento.DataSource = DTMovimiento; CboMovimiento.DisplayMember = "NomMovimiento"; CboMovimiento.ValueMember = "MovimientoID"; //obtener tipo documento //DtTipoDocumento = new DataTable(); //DtTipoDocumento = ObjCL_Kardex.GetTipoDocumento(); CboTipoDocumento.HoldFields(); CboTipoDocumento.DataSource = DtTipoDocumento; CboTipoDocumento.DisplayMember = "Descripcion"; CboTipoDocumento.ValueMember = "TipoContabilidad"; //obtener operacion //DTOperacion = new DataTable(); //DTOperacion = ObjCL_Kardex.GetOperacionKardex(); CboOperacion.HoldFields(); CboOperacion.DataSource = DTOperacion; CboOperacion.DisplayMember = "Descripcion"; CboOperacion.ValueMember = "OperacionID"; }
private void BtnGrabarStock_Click(object sender, EventArgs e) { try { if (RbInsertarStock.Checked == true) { ErrProvider.Clear(); if (c1cboCia.SelectedIndex != -1 & CboSede.SelectedIndex != -1 & CboProducto.SelectedIndex != -1 & TxtCantidad.Text != "" & TxtStockDisponible.Text != "" & TxtStockMaximo.Text != "" & TxtStockMinimo.Text != "" & TxtCantidad.Text != "." & TxtStockDisponible.Text != "." & TxtStockMaximo.Text != "." & TxtStockMinimo.Text != ".") { CL_Almacen ObjCL_Almacen = new CL_Almacen(); ObjCL_Almacen.InsertStockAlmacen(CboAlmacen.SelectedValue.ToString(), CboProducto.SelectedValue.ToString(), Convert.ToDecimal(TxtCantidad.Text), Convert.ToDecimal(TxtStockDisponible.Text), Convert.ToDecimal(TxtStockMinimo.Text), Convert.ToDecimal(TxtStockMaximo.Text), AppSettings.UserID); MessageBox.Show("se grabo correctamente", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { if (c1cboCia.SelectedIndex == -1) { ErrProvider.SetError(c1cboCia, "Debe seleccionar una empresa"); } if (CboSede.SelectedIndex == -1) { ErrProvider.SetError(CboSede, "Debe seleccionar una sede"); } if (CboProducto.SelectedIndex == -1) { ErrProvider.SetError(CboProducto, "Debe seleccionar un producto"); } if (TxtCantidad.Text == "" | TxtCantidad.Text == ".") { ErrProvider.SetError(TxtCantidad, "Debe ingresar una cantidad valida"); } if (TxtStockDisponible.Text == "" | TxtStockDisponible.Text == ".") { ErrProvider.SetError(TxtStockDisponible, "Debe ingresar una cantidad valida"); } if (TxtStockMaximo.Text == "" | TxtStockMaximo.Text == ".") { ErrProvider.SetError(TxtStockMaximo, "Debe ingresar una cantidad valida"); } if (TxtStockMinimo.Text == "" | TxtStockMinimo.Text == ".") { ErrProvider.SetError(TxtStockMinimo, "Debe ingresar una cantidad valida"); } } } else if (RbInsertarPrecio.Checked == true) { ErrProvider.Clear(); if (c1cboCia.SelectedIndex != -1 & CboSede.SelectedIndex != -1 & CboProducto.SelectedIndex != -1 & TxtPrecio.Text != "" & TxtPrecio.Text != ".") { CL_Producto ObjCL_Producto = new CL_Producto(); ObjCL_Producto.InsertPrecioNuevo(CboAlmacen.SelectedValue.ToString(), CboProducto.SelectedValue.ToString(), AppSettings.UserID, Convert.ToDecimal(TxtPrecio.Text), AppSettings.SedeID); MessageBox.Show("se grabo correctamente el precio", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { if (c1cboCia.SelectedIndex == -1) { ErrProvider.SetError(c1cboCia, "Debe seleccionar una empresa"); } if (CboSede.SelectedIndex == -1) { ErrProvider.SetError(CboSede, "Debe seleccionar una sede"); } if (CboProducto.SelectedIndex == -1) { ErrProvider.SetError(CboProducto, "Debe seleccionar un producto"); } if (TxtPrecio.Text == "" | TxtPrecio.Text == ".") { ErrProvider.SetError(TxtPrecio, "Debe ingresar una cantidad valida"); } } } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
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); } } }
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); } }
public void AgregarProductosterminados(DataTable DtProductosBatch, DataTable DtTemp, string EmpresaID, string SedeId, int UserID, int MateriaPrimaHistoricoID) { //agrega a productos terminados lo ya producido try { //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("AlmacenOrigen", typeof(string)); DtActuStockLocal.Columns.Add("ProductoID", typeof(string)); DtActuStockLocal.Columns.Add("Adicion", typeof(decimal)); //tabla para actualizar el nuevo stock (agregar productos recepcionados) DataTable DtDisminuirStock = new DataTable(); DtDisminuirStock.Columns.Add("AlmacenID", typeof(string)); DtDisminuirStock.Columns.Add("ProductoID", typeof(string)); DtDisminuirStock.Columns.Add("Cantidad", typeof(decimal)); //tabla para cambiar el estado de lo producido DataTable DtEstadoProducido = new DataTable(); DtEstadoProducido.TableName = "MateriasPrimasFormuladosEstado"; DtEstadoProducido.Columns.Add("MateriaPrimaHistoricoID", typeof(Int32)); DtEstadoProducido.Columns.Add("ProductoID", typeof(string)); #region actualiza el stock local string Envase = "01"; //envase sacos string Presentacion = "0139"; //presentacion 50 Kg foreach (DataRow Row in DtProductosBatch.Rows) { if (Convert.ToBoolean(Row["Producir"]) == true) { DataRow DrR = DtActuStockLocal.NewRow(); DrR["AlmacenID"] = EmpresaID + SedeId + "PTE"; DrR["AlmacenOrigen"] = EmpresaID + SedeId + "PRO"; DrR["ProductoID"] = Row["ProductoID"].ToString().Substring(0, 5) + Envase + Presentacion + Row["ProductoID"].ToString().Substring(11); DrR["Adicion"] = Convert.ToDecimal(Row["Batch"]) * 30;// es por 20 porque un batch equivale a 20 sacos de 50 kg #region Aca se agrega los ya terminados para cambiarles de estado DataRow DrE = DtEstadoProducido.NewRow(); DrE["MateriaPrimaHistoricoID"] = MateriaPrimaHistoricoID; DrE["ProductoID"] = Row["ProductoID"]; DtEstadoProducido.Rows.Add(DrE); #endregion #region Disminuir el insumo de almacen Produccion //filtrar por el producto terminado y disminuirlo de "Produccion" DataView DvDisProduccion = new DataView(DtTemp); DvDisProduccion.RowFilter = "ProductoID = '" + Row["ProductoID"] + "'"; //recurrer vista filtrada y disminuir del almacen local foreach (DataRowView Drv in DvDisProduccion) { DataRow DrDi = DtDisminuirStock.NewRow(); DrDi["AlmacenID"] = EmpresaID + SedeId + "PRO"; DrDi["ProductoID"] = Convert.ToString(Drv["ProductoIDMateria"]); DrDi["Cantidad"] = Convert.ToDecimal(Drv["Cantidad"]) * Convert.ToDecimal(Row["Batch"]); DtDisminuirStock.Rows.Add(DrDi); } #endregion 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("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"] = Dv[0]["AlmacenOrigen"]; DrR["ProductoID"] = RowP["ProductoID"]; DrR["Adicion"] = Suma; DrR["NroDocumento"] = null; DtActuStockLocal2.Rows.Add(DrR); } #endregion #region agrupar para disminuir el stock de "Produccion" //Agrupar los productos apra almacenarlos DataTable DtProductoDis = new DataTable(); DataTable DtActuStockLocal2Dis = new DataTable(); DtActuStockLocal2Dis.Columns.Add("AlmacenID", typeof(string)); DtActuStockLocal2Dis.Columns.Add("ProductoID", typeof(string)); DtActuStockLocal2Dis.Columns.Add("Cantidad", typeof(decimal)); DtProductoDis = new BaseFunctions().SelectDistinct(DtDisminuirStock, "ProductoID"); foreach (DataRow RowP in DtProductoDis.Rows) { DataView Dv = new DataView(DtDisminuirStock); Dv.RowFilter = "ProductoID = '" + RowP["ProductoID"] + "'"; decimal Suma = 0; foreach (DataRowView Drv in Dv) //sumar las cantidades por producto { Suma += Convert.ToDecimal(Drv["Cantidad"]); } DataRow DrR = DtActuStockLocal2Dis.NewRow(); DrR["AlmacenID"] = Dv[0]["AlmacenID"]; DrR["ProductoID"] = Dv[0]["ProductoID"]; DrR["Cantidad"] = Suma; DtActuStockLocal2Dis.Rows.Add(DrR); } #endregion #region actualizar con XML if (DtActuStockLocal2.Rows.Count > 0) { bool Valor; string xml1 = new BaseFunctions().GetXML(DtActuStockLocal2).Replace("NewDataSet", "DocumentElement"); Valor = new CL_Almacen().UpdateXMLStockAlmacen(xml1, 4, UserID); string xml2 = new BaseFunctions().GetXML(DtEstadoProducido).Replace("NewDataSet", "DocumentElement"); new CL_Produccion().UpdateXMLMateriasPrimasFormuladosEstado(xml2, UserID); } #endregion #region bucle para bajar el stock de produccion foreach (DataRow Dr in DtActuStockLocal2Dis.Rows) { bool Actualizo = false; Actualizo = new CL_Almacen().UpdateStockSustraccion(Dr["AlmacenID"].ToString(), Dr["ProductoID"].ToString(), Convert.ToDecimal(Dr["Cantidad"]), "D", null, 5, null, null, null, null, UserID); } #endregion } catch (Exception ex) { throw new Exception(ex.Message); } }