void RiempiGrid() { string filterstock = QHS.IsNull("idinvkind"); string sqlCmd = " SELECT * " + " FROM ddt_inview " + " WHERE " + filter + " AND EXISTS (SELECT * FROM stock WHERE " + " ddt_inview.idddt_in = stock.idddt_in AND " + filterstock + " ) " + " ORDER BY ddt_inview.idddt_in asc "; DataTable ddt_in = Meta.Conn.SQLRunner(sqlCmd); if (ddt_in.Rows.Count != 0) { ddt_in.PrimaryKey = new DataColumn[] { ddt_in.Columns["idddt_in"] }; //Ora ha messo in ddt_in tutto ciò che da DB risulta 'da fatturare'. if (ddt_in.Select().Length > 0) { MetaData MAP; MAP = Meta.Dispatcher.Get("ddt_inview"); MAP.DescribeColumns(ddt_in, "default"); DataSet D = new DataSet(); D.Tables.Add(ddt_in); HelpForm.SetDataGrid(gridDettagli, ddt_in); gridDettagli.TableStyles.Clear(); HelpForm.SetGridStyle(gridDettagli, ddt_in); formatgrids format = new formatgrids(gridDettagli); format.AutosizeColumnWidth(); HelpForm.SetAllowMultiSelection(ddt_in, true); SelezionaTutto(); } } }
void riempiGrid() { if (!HasDDT) { labDDT.Visible = false; } string filtercurrency = QHS.CmpEq("idcurrency", idcurrency); filtercurrency = QHS.DoPar(QHS.AppOr(filtercurrency, QHS.IsNull("idcurrency"))); string filter = QHS.AppAnd(filterregistry, filterflagmixed); filter = QHS.AppAnd(filter, filtercurrency); filter = QHS.AppAnd(filter, QHS.CmpNe("toinvoice", 'N'), QHS.CmpEq("linktoinvoice", 'S')); filter = QHS.AppAnd(filter, QHS.CmpEq("idmandatestatus", 5)); // stato approvato object currency = Conn.DO_READ_VALUE("currency", filtercurrency, "description"); if (currency != null) { lblValuta.Text = currency.ToString().ToUpper(); } DataTable mandateDetail; if (HasDDT) { mandateDetail = Conn.RUN_SELECT("mandatedetailstockedtoinvoice", "*", "idmankind ASC,yman DESC,nman DESC,rownum ASC, idgroup ASC", filter, null, false); } else { mandateDetail = Conn.RUN_SELECT("mandatedetailnoddttoinvoice", "*", "idmankind ASC,yman DESC,nman DESC,rownum ASC, idgroup ASC", filter, null, false); } Conn.DeleteAllUnselectable(mandateDetail); if (mandateDetail.Rows.Count != 0) { mandateDetail.PrimaryKey = new[] { mandateDetail.Columns["idmankind"], mandateDetail.Columns["yman"], mandateDetail.Columns["nman"], mandateDetail.Columns["rownum"] }; //Ora ha messo in MandateDetail tutto ciò che da DB risulta 'da fatturare'. //Effettua ora una serie di allineamenti sul DataTable per renderlo più coerente con quello // che c'è nel DataSet del form padre. //Per ogni riga del DataSet in stato di INSERT/UPDATE effettua una sottrazione ed eventualmente // un delete su MandateDetail se la riga corrispondente risulta essere esaurita. foreach (DataRow R in InvoiceDetail.Select()) { if (R.RowState != DataRowState.Added) { continue; } if (R["idmankind"] == DBNull.Value) { continue; //Non è una riga collegata a dettagli ordine } string filtermand = QHC.CmpMulti(R, "idmankind", "yman", "nman"); filtermand = QHC.AppAnd(filtermand, QHC.CmpEq("rownum", R["manrownum"])); DataRow [] RM = mandateDetail.Select(filtermand); if ((RM.Length == 0)) { continue; } var detail = RM[0]; decimal oldnumber = 0; decimal newnumber = CfgFn.GetNoNullDecimal(R["number", DataRowVersion.Current]); decimal oldresidual = CfgFn.GetNoNullDecimal(detail["residual"]); decimal newresidual = oldresidual - newnumber + oldnumber; detail["residual"] = newresidual; } foreach (DataRow R in InvoiceDetail.Select()) { if (R.RowState != DataRowState.Modified) { continue; } string filtermand = QHC.CmpMulti(R, "idmankind", "yman", "nman"); filtermand = QHC.AppAnd(filtermand, QHC.CmpEq("rownum", R["manrownum"])); DataRow[] RM = mandateDetail.Select(filtermand); if ((RM.Length == 0)) { continue; } DataRow detail = RM[0]; decimal oldnumber; if (R["idmankind", DataRowVersion.Original] == DBNull.Value) { oldnumber = 0; } else { oldnumber = CfgFn.GetNoNullDecimal(R["number", DataRowVersion.Original]); } decimal newnumber; if (R["idmankind", DataRowVersion.Current] == DBNull.Value) { newnumber = 0; } else { newnumber = CfgFn.GetNoNullDecimal(R["number", DataRowVersion.Current]); } decimal oldresidual = CfgFn.GetNoNullDecimal(detail["residual"]); decimal newresidual = oldresidual - newnumber + oldnumber; detail["residual"] = newresidual; } foreach (DataRow r in InvoiceDetail.Rows) { if (r.RowState != DataRowState.Deleted) { continue; } if (r["idmankind", DataRowVersion.Original] == DBNull.Value) { continue; } string filtermand = QHC.CmpMulti(r, "idmankind", "yman", "nman"); filtermand = QHC.AppAnd(filtermand, QHC.CmpEq("rownum", r["manrownum", DataRowVersion.Original])); DataRow [] RM = mandateDetail.Select(filtermand); if ((RM.Length == 0)) { continue; } DataRow Detail = RM[0]; decimal oldnumber = CfgFn.GetNoNullDecimal(r["number", DataRowVersion.Original]); decimal newnumber = 0; decimal oldresidual = CfgFn.GetNoNullDecimal(Detail["residual"]); decimal newresidual = oldresidual - newnumber + oldnumber; Detail["residual"] = newresidual; } foreach (DataRow R in mandateDetail.Select()) { decimal residual = CfgFn.GetNoNullDecimal(R["residual"]); if (residual == 0) { R.Delete(); } } mandateDetail.AcceptChanges(); if (mandateDetail.Select().Length > 0) { MetaData MAP; if (HasDDT) { MAP = Meta.Dispatcher.Get("mandatedetailstockedtoinvoice"); } else { MAP = Meta.Dispatcher.Get("mandatedetailnoddttoinvoice"); } MAP.DescribeColumns(mandateDetail, "default"); DataSet D = new DataSet(); D.Tables.Add(mandateDetail); HelpForm.SetDataGrid(gridDettagli, mandateDetail); gridDettagli.TableStyles.Clear(); HelpForm.SetGridStyle(gridDettagli, mandateDetail); formatgrids format = new formatgrids(gridDettagli); format.AutosizeColumnWidth(); HelpForm.SetAllowMultiSelection(mandateDetail, true); SelezionaTutto(); } } }