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