public FacturaControlInfoViewModel(AccountsModel DAccountsModel, string nomerf, string contr) { Title = string.Format("Справка движение по фактура {0} и контрагент {1} по сметка {2}", nomerf, contr, DAccountsModel.ShortName); AllMovement = new ObservableCollection <AccItemSaldo>(Context.GetInfoFactura(DAccountsModel.Id, DAccountsModel.TypeAccountEx, nomerf, contr)); AccItemSaldo accItemSaldo = new AccItemSaldo(); var rezi = Context.GetAllAnaliticSaldos(DAccountsModel.Id, DAccountsModel.FirmaId); var saldo = rezi.FirstOrDefault(e => e.NameContragent.Trim() == contr.Trim() && e.NumInvoise.Trim() == nomerf.Trim()); if (saldo != null) { accItemSaldo.Nsd = saldo.BeginSaldoDebit; accItemSaldo.Nsc = saldo.BeginSaldoCredit; } accItemSaldo.Type = DAccountsModel.TypeAccountEx; accItemSaldo.Od = AllMovement.Sum(e => e.Od); accItemSaldo.Oc = AllMovement.Sum(e => e.Oc); Ns = string.Format("Начално дебитно салдо {0} Начално кредитно салдо {1}", accItemSaldo.Nsd, accItemSaldo.Nsc); Ks = string.Format("Краино дебитно салдо {0} Крайно кредитно салдо {1}", accItemSaldo.Ksd, accItemSaldo.Ksc); }
public List <List <string> > GetItems() { _movements = new List <AccItemSaldo>(); var _movements1 = new List <AccItemSaldo>(); var items = new List <List <string> >(); var rezi = Context.GetAllAnaliticSaldos(accountsModel.Id, accountsModel.FirmaId); var megaalld = new List <InvoiseControl>(Context.GetFullInvoiseContoDebit(accountsModel.Id, true)); var megaallc = new List <InvoiseControl>(Context.GetFullInvoiseContoCredit(accountsModel.Id, true)); AllMovementDebit = new ObservableCollection <InvoiseControl>(megaalld.Where(e => e.DataInvoise < FromDate)); AllMovementCredit = new ObservableCollection <InvoiseControl>(megaallc.Where(e => e.DataInvoise < FromDate)); var AllMovementDebit1 = new ObservableCollection <InvoiseControl>(megaalld.Where(e => e.DataInvoise >= FromDate && e.DataInvoise <= ToDate)); var AllMovementCredit1 = new ObservableCollection <InvoiseControl>(megaallc.Where(e => e.DataInvoise >= FromDate && e.DataInvoise <= ToDate)); foreach (InvoiseControl invoiseControl in AllMovementDebit) { var item = new AccItemSaldo(); item.NInvoise = invoiseControl.NInvoise; item.NameContragent = invoiseControl.NameContragent; item.Code = invoiseControl.CodeContragent; item.Od = invoiseControl.Oborot; item.Type = accountsModel.TypeAccount; if (item.Type == 1) { item.Data = invoiseControl.DataInvoise; } var lc = AllMovementCredit.FirstOrDefault( w => w.CodeContragent == invoiseControl.CodeContragent && w.NInvoise == invoiseControl.NInvoise); if (lc != null) { item.Oc += lc.Oborot; if (item.Type == 2) { item.Data = lc.DataInvoise; } AllMovementCredit.Remove(lc); } _movements.Add(item); } foreach (InvoiseControl invoiseControl in AllMovementCredit) { var item = new AccItemSaldo(); item.NInvoise = invoiseControl.NInvoise; item.NameContragent = invoiseControl.NameContragent; item.Code = invoiseControl.CodeContragent; item.Oc = invoiseControl.Oborot; item.Type = accountsModel.TypeAccount; item.Data = invoiseControl.DataInvoise; _movements.Add(item); } foreach (AccItemSaldo accItemSaldo in _movements) { var saldo = rezi.FirstOrDefault( m => m.Code == accItemSaldo.Code && m.NumInvoise == accItemSaldo.NInvoise); if (saldo != null) { accItemSaldo.Nsd = saldo.BeginSaldoDebit; accItemSaldo.Nsc = saldo.BeginSaldoCredit; rezi.Remove(saldo); } } foreach (var item in rezi.OrderBy(e => e.Code)) { var item1 = new AccItemSaldo(); item1.NInvoise = item.NumInvoise; item1.NameContragent = item.NameContragent; item1.Code = item.Code; item1.Od = 0; item1.Nsd = item.BeginSaldoDebit; item1.Nsc = item.BeginSaldoCredit; item1.Type = accountsModel.TypeAccount; item1.Data = item.Date; _movements.Add(item1); } if (typerep == 1) { string contr = ""; var filt = filter.Split('|'); if (filt.Length > 0) { contr = filt[1].Trim(); _movements = new List <AccItemSaldo>(_movements.Where(w => w.Code == contr)); } } foreach (InvoiseControl invoiseControl in AllMovementDebit1) { var item = new AccItemSaldo(); item.NInvoise = invoiseControl.NInvoise; item.NameContragent = invoiseControl.NameContragent; item.Code = invoiseControl.CodeContragent; item.Od = invoiseControl.Oborot; item.Type = accountsModel.TypeAccount; if (item.Type == 1) { item.Data = invoiseControl.DataInvoise; } var lc = AllMovementCredit1.FirstOrDefault( w => w.CodeContragent == invoiseControl.CodeContragent && w.NInvoise == invoiseControl.NInvoise); if (lc != null) { item.Oc += lc.Oborot; if (item.Type == 2) { item.Data = lc.DataInvoise; } AllMovementCredit1.Remove(lc); } _movements1.Add(item); } foreach (InvoiseControl invoiseControl in AllMovementCredit1) { var item = new AccItemSaldo(); item.NInvoise = invoiseControl.NInvoise; item.NameContragent = invoiseControl.NameContragent; item.Code = invoiseControl.CodeContragent; item.Oc = invoiseControl.Oborot; item.Type = accountsModel.TypeAccount; item.Data = invoiseControl.DataInvoise; _movements1.Add(item); } foreach (AccItemSaldo accItemSaldo in _movements1) { var saldo = _movements.FirstOrDefault( m => m.Code == accItemSaldo.Code && m.NInvoise == accItemSaldo.NInvoise); if (saldo != null) { accItemSaldo.Nsd = saldo.Nsd + saldo.Od; accItemSaldo.Nsc = saldo.Nsc + saldo.Oc; _movements.Remove(saldo); } } foreach (var item in _movements.OrderBy(e => e.Code)) { var item1 = new AccItemSaldo(); item1.NInvoise = item.NInvoise; item1.NameContragent = item.NameContragent; item1.Code = item.Code; item1.Nsd = item.Nsd + item.Od; item1.Nsc = item.Nsc + item.Oc; item1.Type = accountsModel.TypeAccount; item1.Data = item.Data; _movements1.Add(item1); } if (typerep == 1) { string contr = ""; var filt = filter.Split('|'); if (filt.Length > 0) { contr = filt[1].Trim(); _movements1 = new List <AccItemSaldo>(_movements1.Where(w => w.Code == contr)); } } string name = ""; string code = ""; bool first = true; decimal sumansc = 0; decimal sumaOc = 0; decimal sumansd = 0; decimal sumaOd = 0; decimal sumansct = 0; decimal sumaOct = 0; decimal sumansdt = 0; decimal sumaOdt = 0; var query = (from t in _movements1 group t by new { t.NInvoise, t.Code } into grp select new AccItemSaldo { NInvoise = grp.Key.NInvoise, NameContragent = grp.Last().NameContragent, Code = grp.Key.Code, Oc = grp.Sum(t => t.Oc), Od = grp.Sum(t => t.Od), Nsc = grp.Sum(t => t.Nsc), Nsd = grp.Sum(t => t.Nsd), Data = grp.Max(t => t.Data), Reason = grp.First().Reason, Folder = grp.First().Folder, DocNumber = grp.First().DocNumber }); foreach (AccItemSaldo itemSaldo in query.OrderBy(m => m.Cod)) { List <string> row = new List <string>(); if (first) { name = itemSaldo.NameContragent; code = itemSaldo.Code; first = false; } else { if (code != itemSaldo.Code && WithContragentSum) { if (!OnlyContragent) { items.Add(new List <string> { "-----------------------------------", "---------------------------------------------------------------------------------------", "---------------------------------------------------------------------------------------", "-----------------------------------", "-----------------------------------", "-----------------------------------", "-----------------------------------", "-----------------------------------" }); } List <string> rowTotal = new List <string>(); if (!OnlyContragent) { rowTotal.Add(""); rowTotal.Add(""); } else { rowTotal.Add(code); rowTotal.Add(name); } rowTotal.Add(""); rowTotal.Add(" Общо :"); //row.Add(itemSaldo.Nsd.ToString(Vf.LevFormatUI)); if (accountsModel.TypeAccount != 1) { var ks = sumansc + sumaOc - sumansd - sumaOd; var ns = (sumansc - sumansd); rowTotal.Add(ns.ToString(Vf.LevFormatUI)); rowTotal.Add(sumaOd.ToString(Vf.LevFormatUI)); rowTotal.Add(sumaOc.ToString(Vf.LevFormatUI)); rowTotal.Add(ks.ToString(Vf.LevFormatUI)); } else { var ks = sumansd + sumaOd - sumansc - sumaOc; var ns = (sumansd - sumansc); rowTotal.Add(ns.ToString(Vf.LevFormatUI)); rowTotal.Add(sumaOd.ToString(Vf.LevFormatUI)); rowTotal.Add(sumaOc.ToString(Vf.LevFormatUI)); rowTotal.Add(ks.ToString(Vf.LevFormatUI)); } items.Add(rowTotal); if (!OnlyContragent) { items.Add(new List <string> { "-----------------------------------", "---------------------------------------------------------------------------------------", "---------------------------------------------------------------------------------------", "-----------------------------------", "-----------------------------------", "-----------------------------------", "-----------------------------------", "-----------------------------------" }); } sumansc = 0; sumansd = 0; sumaOc = 0; sumaOd = 0; name = itemSaldo.NameContragent; code = itemSaldo.Code; } } sumansc += itemSaldo.Nsc; sumansd += itemSaldo.Nsd; sumaOc += itemSaldo.Oc; sumaOd += itemSaldo.Od; sumansct += itemSaldo.Nsc; sumansdt += itemSaldo.Nsd; sumaOct += itemSaldo.Oc; sumaOdt += itemSaldo.Od; //row.Add(itemSaldo.Nsd.ToString(Vf.LevFormatUI)); if (accountsModel.TypeAccount != 1) { itemSaldo.Ks = itemSaldo.Nsc + itemSaldo.Oc - itemSaldo.Nsd - itemSaldo.Od; itemSaldo.Ns = itemSaldo.Nsc - itemSaldo.Nsd; } else { itemSaldo.Ks = itemSaldo.Nsd + itemSaldo.Od - itemSaldo.Nsc - itemSaldo.Oc; itemSaldo.Ns = itemSaldo.Nsd - itemSaldo.Nsc; } if (!OnlyContragent) { if (!(itemSaldo.Ns == 0 && itemSaldo.Od == 0 && itemSaldo.Oc == 0 && itemSaldo.Ks == 0)) { row.Add(itemSaldo.Code); row.Add(itemSaldo.NameContragent); row.Add(itemSaldo.NInvoise); row.Add(string.Format("{0}.{1}.{2}", itemSaldo.Data.Day.ToZeroString(2), itemSaldo.Data.Month.ToZeroString(2), itemSaldo.Data.Year.ToZeroString(4))); row.Add(itemSaldo.Ns.ToString(Vf.LevFormatUI)); row.Add(itemSaldo.Od.ToString(Vf.LevFormatUI)); row.Add(itemSaldo.Oc.ToString(Vf.LevFormatUI)); row.Add(itemSaldo.Ks.ToString(Vf.LevFormatUI)); items.Add(row); } } //row.Add(itemSaldo.Ksc.ToString(Vf.LevFormatUI)); } if (WithContragentSum) { if (!OnlyContragent) { items.Add(new List <string> { "-----------------------------------", "---------------------------------------------------------------------------------------", "---------------------------------------------------------------------------------------", "-----------------------------------", "-----------------------------------", "-----------------------------------", "-----------------------------------", "-----------------------------------" }); } List <string> rowTotalLas = new List <string>(); if (!OnlyContragent) { rowTotalLas.Add(""); rowTotalLas.Add(""); } else { rowTotalLas.Add(code); rowTotalLas.Add(name); } rowTotalLas.Add(""); rowTotalLas.Add(" Общо :"); //row.Add(itemSaldo.Nsd.ToString(Vf.LevFormatUI)); if (accountsModel.TypeAccount != 1) { var ks = sumansc + sumaOc - sumansd - sumaOd; var ns = sumansc - sumansd; rowTotalLas.Add(ns.ToString(Vf.LevFormatUI)); rowTotalLas.Add(sumaOd.ToString(Vf.LevFormatUI)); rowTotalLas.Add(sumaOc.ToString(Vf.LevFormatUI)); rowTotalLas.Add(ks.ToString(Vf.LevFormatUI)); } else { var ks = sumansd + sumaOd - sumansc - sumaOc; var ns = sumansd - sumansc; rowTotalLas.Add(ns.ToString(Vf.LevFormatUI)); rowTotalLas.Add(sumaOd.ToString(Vf.LevFormatUI)); rowTotalLas.Add(sumaOc.ToString(Vf.LevFormatUI)); rowTotalLas.Add(ks.ToString(Vf.LevFormatUI)); } items.Add(rowTotalLas); } items.Add(new List <string> { "-----------------------------------", "---------------------------------------------------------------------------------------", "---------------------------------------------------------------------------------------", "-----------------------------------", "-----------------------------------", "-----------------------------------", "-----------------------------------", "-----------------------------------" }); List <string> rowTotalLast = new List <string>(); rowTotalLast.Add(""); rowTotalLast.Add(""); rowTotalLast.Add(""); rowTotalLast.Add(" Общо :"); //row.Add(itemSaldo.Nsd.ToString(Vf.LevFormatUI)); if (accountsModel.TypeAccount != 1) { var ks = sumansct + sumaOct - sumansdt - sumaOdt; var ns = sumansct - sumansdt; rowTotalLast.Add(ns.ToString(Vf.LevFormatUI)); rowTotalLast.Add(sumaOdt.ToString(Vf.LevFormatUI)); rowTotalLast.Add(sumaOct.ToString(Vf.LevFormatUI)); rowTotalLast.Add(ks.ToString(Vf.LevFormatUI)); } else { var ks = sumansdt + sumaOdt - sumansct - sumaOct; var ns = sumansdt - sumansct; rowTotalLast.Add(ns.ToString(Vf.LevFormatUI)); rowTotalLast.Add(sumaOdt.ToString(Vf.LevFormatUI)); rowTotalLast.Add(sumaOct.ToString(Vf.LevFormatUI)); rowTotalLast.Add(ks.ToString(Vf.LevFormatUI)); } items.Add(rowTotalLast); return(items); }
public List <List <string> > GetItems() { _movements = new List <AccItemSaldo>(); _movements1 = new List <AccItemSaldo>(); var items = new List <List <string> >(); var rezi = Context.GetAllAnaliticSaldos(accountsModel.Id, accountsModel.FirmaId); if (accountsModel.TypeAccount == 1) { AllMovementDebit = new ObservableCollection <InvoiseControl>(Context.GetFullInvoiseContoDebit(accountsModel.Id).Where(e => e.DataInvoise < FromDate)); AllMovementCredit = new ObservableCollection <InvoiseControl>(Context.GetFullInvoiseContoCredit(accountsModel.Id, true).Where(e => e.DataInvoise < FromDate)); AllMovementDebit1 = new ObservableCollection <InvoiseControl>(Context.GetFullInvoiseContoDebit(accountsModel.Id).Where(e => e.DataInvoise >= FromDate && e.DataInvoise <= ToDate)); AllMovementCredit1 = new ObservableCollection <InvoiseControl>(Context.GetFullInvoiseContoCredit(accountsModel.Id, true).Where(e => e.DataInvoise >= FromDate && e.DataInvoise <= ToDate)); } else { AllMovementDebit = new ObservableCollection <InvoiseControl>(Context.GetFullInvoiseContoDebit(accountsModel.Id, true).Where(e => e.DataInvoise < FromDate)); AllMovementCredit = new ObservableCollection <InvoiseControl>(Context.GetFullInvoiseContoCredit(accountsModel.Id).Where(e => e.DataInvoise < FromDate)); AllMovementDebit1 = new ObservableCollection <InvoiseControl>(Context.GetFullInvoiseContoDebit(accountsModel.Id).Where(e => e.DataInvoise >= FromDate && e.DataInvoise <= ToDate)); AllMovementCredit1 = new ObservableCollection <InvoiseControl>(Context.GetFullInvoiseContoCredit(accountsModel.Id, true).Where(e => e.DataInvoise >= FromDate && e.DataInvoise <= ToDate)); } foreach (InvoiseControl invoiseControl in AllMovementDebit) { var item = new AccItemSaldo(); item.NInvoise = invoiseControl.NInvoise; item.NameContragent = invoiseControl.NameContragent; item.Code = invoiseControl.CodeContragent; item.Od = invoiseControl.Oborot; item.Type = accountsModel.TypeAccount; item.Folder = invoiseControl.Folder; item.DocNumber = invoiseControl.DocNumber; item.Reason = invoiseControl.Reason; item.Pr1 = invoiseControl.Pr1; item.Pr2 = invoiseControl.Pr2; if (item.Type == 1) { item.Data = invoiseControl.DataInvoise; } var lc = AllMovementCredit.FirstOrDefault( w => w.CodeContragent == invoiseControl.CodeContragent && w.NInvoise == invoiseControl.NInvoise); if (lc != null) { item.Oc += lc.Oborot; if (item.Type == 2) { item.Data = lc.DataInvoise; } AllMovementCredit.Remove(lc); } _movements1.Add(item); } foreach (InvoiseControl invoiseControl in AllMovementCredit) { var item = new AccItemSaldo(); item.NInvoise = invoiseControl.NInvoise; item.NameContragent = invoiseControl.NameContragent; item.Code = invoiseControl.CodeContragent; item.Oc = invoiseControl.Oborot; item.Type = accountsModel.TypeAccount; item.Data = invoiseControl.DataInvoise; item.Folder = invoiseControl.Folder; item.DocNumber = invoiseControl.DocNumber; item.Reason = invoiseControl.Reason; item.Pr1 = invoiseControl.Pr1; item.Pr2 = invoiseControl.Pr2; _movements1.Add(item); } foreach (AccItemSaldo accItemSaldo in _movements1) { var saldo = rezi.FirstOrDefault( m => m.Code == accItemSaldo.Code && m.NumInvoise == accItemSaldo.NInvoise); if (saldo != null) { accItemSaldo.Nsd = saldo.BeginSaldoDebit; accItemSaldo.Nsc = saldo.BeginSaldoCredit; rezi.Remove(saldo); } } foreach (var item in rezi.OrderBy(e => e.Code)) { var item1 = new AccItemSaldo(); item1.NInvoise = item.NumInvoise; item1.NameContragent = item.NameContragent; item1.Data = item.Date; item1.Code = item.Code; item1.Od = 0; item1.Nsd = item.BeginSaldoDebit; item1.Nsc = item.BeginSaldoCredit; item1.Type = accountsModel.TypeAccount; _movements1.Add(item1); } foreach (InvoiseControl invoiseControl in AllMovementDebit1) { var item = new AccItemSaldo(); item.NInvoise = invoiseControl.NInvoise; item.NameContragent = invoiseControl.NameContragent; item.Code = invoiseControl.CodeContragent; item.Od = invoiseControl.Oborot; item.Type = accountsModel.TypeAccount; item.Folder = invoiseControl.Folder; item.DocNumber = invoiseControl.DocNumber; item.Reason = invoiseControl.Reason; item.Pr1 = invoiseControl.Pr1; item.Pr2 = invoiseControl.Pr2; item.Data = invoiseControl.DataInvoise; //if (item.Type == 1) //var lc = AllMovementCredit1.FirstOrDefault( // w => w.CodeContragent == invoiseControl.CodeContragent && w.NInvoise == invoiseControl.NInvoise); //if (lc != null) //{ // item.Oc += lc.Oborot; // if (item.Type == 2) item.Data = lc.DataInvoise; // AllMovementCredit1.Remove(lc); //} _movements.Add(item); } foreach (InvoiseControl invoiseControl in AllMovementCredit1) { var item = new AccItemSaldo(); item.NInvoise = invoiseControl.NInvoise; item.NameContragent = invoiseControl.NameContragent; item.Code = invoiseControl.CodeContragent; item.Oc = invoiseControl.Oborot; item.Type = accountsModel.TypeAccount; item.Data = invoiseControl.DataInvoise; item.Folder = invoiseControl.Folder; item.DocNumber = invoiseControl.DocNumber; item.Reason = invoiseControl.Reason; item.Pr1 = invoiseControl.Pr1; item.Pr2 = invoiseControl.Pr2; _movements.Add(item); } foreach (AccItemSaldo accItemSaldo in _movements) { var saldo = _movements1.FirstOrDefault( m => m.Code == accItemSaldo.Code && m.DocNumber == accItemSaldo.NInvoise); if (saldo != null) { accItemSaldo.Nsd = saldo.Ksd; accItemSaldo.Nsc = saldo.Ksc; _movements1.Remove(saldo); } } foreach (var item in _movements1.OrderBy(e => e.Code)) { var item1 = new AccItemSaldo(); item1.NInvoise = item.NInvoise; item1.NameContragent = item.NameContragent; item1.Code = item.Code; item1.Od = 0; item1.Nsd = item.Ksd; item1.Nsc = item.Ksc; item1.Type = accountsModel.TypeAccount; item1.Data = item.Data; _movements.Add(item1); } //AccSaldo = Context.GetSaldoAcc(accountsModel.Id); //Period = string.Format("От дата {0} до дата {1}", // new DateTime(ConfigTempoSinglenton.GetInstance().WorkDate.Year, // 1, 1).ToShortDateString(), // new DateTime(ConfigTempoSinglenton.GetInstance().WorkDate.Year, // 1, 1).AddYears(1).AddDays(-1).ToShortDateString()); //AccInfo = accountsModel.ShortName; //AllMovement = new ObservableCollection<AccItemSaldo>(_movements); //} if (typerep == 1 && filter != null) { string contr = ""; var filt = filter.Split('|'); if (filt.Length > 0) { contr = filt[1].Trim(); _movements = new List <AccItemSaldo>(_movements.Where(w => w.Code == contr)); } } string name = ""; string code = ""; string numinvoice = ""; string folder = ""; string reason = ""; string docnum = ""; string pr1 = ""; string pr2 = ""; bool first = true; decimal sumansc = 0; decimal sumaOc = 0; decimal sumansd = 0; decimal sumaOd = 0; decimal sumansct = 0; decimal sumaOct = 0; decimal sumansdt = 0; decimal sumaOdt = 0; foreach (AccItemSaldo itemSaldo in _movements.OrderBy(m => m.Cod).ThenBy(m => m.NInvoise)) { List <string> row = new List <string>(); if (first) { name = itemSaldo.NameContragent; code = itemSaldo.Code; numinvoice = itemSaldo.NInvoise; first = false; folder = itemSaldo.Folder; reason = itemSaldo.Reason; docnum = itemSaldo.DocNumber; pr1 = itemSaldo.Pr1; pr2 = itemSaldo.Pr2; } else { if (code != itemSaldo.Code && WithContragentSum)//|| numinvoice !=itemSaldo.NInvoise { if (!OnlyContragent) { NewRow(items); } List <string> rowTotal = new List <string>(); if (!OnlyContragent) { rowTotal.Add(""); rowTotal.Add(""); //rowTotal.Add(""); } else { rowTotal.Add(code); rowTotal.Add(name); rowTotal.Add(numinvoice); } rowTotal.Add(""); rowTotal.Add(" Общо :"); //row.Add(itemSaldo.Nsd.ToString(Vf.LevFormatUI)); if (accountsModel.TypeAccount != 1) { var ks = sumansc + sumaOc - sumansd - sumaOd; var ns = sumansc - sumansd; rowTotal.Add(ns.ToString(Vf.LevFormatUI)); rowTotal.Add(sumaOd.ToString(Vf.LevFormatUI)); rowTotal.Add(sumaOc.ToString(Vf.LevFormatUI)); rowTotal.Add(ks.ToString(Vf.LevFormatUI)); } else { var ks = sumansd + sumaOd - sumansc - sumaOc; var ns = sumansd - sumansc; rowTotal.Add(ns.ToString(Vf.LevFormatUI)); rowTotal.Add(sumaOd.ToString(Vf.LevFormatUI)); rowTotal.Add(sumaOc.ToString(Vf.LevFormatUI)); rowTotal.Add(ks.ToString(Vf.LevFormatUI)); } if (!OnlyContragent) { rowTotal.Add(""); rowTotal.Add(""); rowTotal.Add(""); rowTotal.Add(""); rowTotal.Add(""); } else { rowTotal.Add(folder); rowTotal.Add(docnum); rowTotal.Add(reason); rowTotal.Add(pr1); rowTotal.Add(pr2); } items.Add(rowTotal); if (!OnlyContragent) { NewRow(items); } sumansc = 0; sumansd = 0; sumaOc = 0; sumaOd = 0; name = itemSaldo.NameContragent; code = itemSaldo.Code; numinvoice = itemSaldo.NInvoise; folder = itemSaldo.Folder; reason = itemSaldo.Reason; docnum = itemSaldo.DocNumber; pr1 = itemSaldo.Pr1; pr2 = itemSaldo.Pr2; } } sumansc += itemSaldo.Nsc; sumansd += itemSaldo.Nsd; sumaOc += itemSaldo.Oc; sumaOd += itemSaldo.Od; sumansct += itemSaldo.Nsc; sumansdt += itemSaldo.Nsd; sumaOct += itemSaldo.Oc; sumaOdt += itemSaldo.Od; //row.Add(itemSaldo.Nsd.ToString(Vf.LevFormatUI)); if (accountsModel.TypeAccount != 1) { itemSaldo.Ks = itemSaldo.Nsc + itemSaldo.Oc - itemSaldo.Nsd - itemSaldo.Od; itemSaldo.Ns = itemSaldo.Nsc - itemSaldo.Nsd; } else { itemSaldo.Ks = itemSaldo.Nsd + itemSaldo.Od - itemSaldo.Nsc - itemSaldo.Oc; itemSaldo.Ns = itemSaldo.Nsd - itemSaldo.Nsc; } if (!OnlyContragent) { row.Add(itemSaldo.Code); row.Add(itemSaldo.NameContragent); row.Add(itemSaldo.NInvoise); row.Add(string.Format("{0}.{1}.{2}", itemSaldo.Data.Day.ToZeroString(2), itemSaldo.Data.Month.ToZeroString(2), itemSaldo.Data.Year.ToZeroString(4))); row.Add(itemSaldo.Ns.ToString(Vf.LevFormatUI)); row.Add(itemSaldo.Od.ToString(Vf.LevFormatUI)); row.Add(itemSaldo.Oc.ToString(Vf.LevFormatUI)); row.Add(itemSaldo.Ks.ToString(Vf.LevFormatUI)); row.Add(itemSaldo.Folder); row.Add(itemSaldo.DocNumber); row.Add(itemSaldo.Reason); row.Add(itemSaldo.Pr1); row.Add(itemSaldo.Pr2); items.Add(row); } //row.Add(itemSaldo.Ksc.ToString(Vf.LevFormatUI)); } if (WithContragentSum) { if (!OnlyContragent) { NewRow(items); } List <string> rowTotalLas = new List <string>(); if (!OnlyContragent) { rowTotalLas.Add(""); rowTotalLas.Add(""); } else { rowTotalLas.Add(code); rowTotalLas.Add(name); rowTotalLas.Add(numinvoice); } rowTotalLas.Add(""); rowTotalLas.Add(" Общо :"); //row.Add(itemSaldo.Nsd.ToString(Vf.LevFormatUI)); if (accountsModel.TypeAccount != 1) { var ks = sumansc + sumaOc - sumansd - sumaOd; var ns = sumansc - sumansd; rowTotalLas.Add(ns.ToString(Vf.LevFormatUI)); rowTotalLas.Add(sumaOd.ToString(Vf.LevFormatUI)); rowTotalLas.Add(sumaOc.ToString(Vf.LevFormatUI)); rowTotalLas.Add(ks.ToString(Vf.LevFormatUI)); rowTotalLas.Add(folder); rowTotalLas.Add(docnum); rowTotalLas.Add(reason); rowTotalLas.Add(pr1); rowTotalLas.Add(pr2); } else { var ks = sumansd + sumaOd - sumansc - sumaOc; var ns = sumansd - sumansc; rowTotalLas.Add(ns.ToString(Vf.LevFormatUI)); rowTotalLas.Add(sumaOd.ToString(Vf.LevFormatUI)); rowTotalLas.Add(sumaOc.ToString(Vf.LevFormatUI)); rowTotalLas.Add(ks.ToString(Vf.LevFormatUI)); } if (!OnlyContragent) { rowTotalLas.Add(""); rowTotalLas.Add(""); rowTotalLas.Add(""); rowTotalLas.Add(""); rowTotalLas.Add(""); } else { rowTotalLas.Add(folder); rowTotalLas.Add(docnum); rowTotalLas.Add(reason); rowTotalLas.Add(pr1); rowTotalLas.Add(pr2); } items.Add(rowTotalLas); } if (filter == null) { NewRow(items); List <string> rowTotalLast = new List <string>(); rowTotalLast.Add(""); rowTotalLast.Add(""); rowTotalLast.Add(""); rowTotalLast.Add(" Общо :"); //row.Add(itemSaldo.Nsd.ToString(Vf.LevFormatUI)); if (accountsModel.TypeAccount != 1) { var ks = sumansct + sumaOct - (sumansdt + sumaOdt); var ns = sumansct - (sumansdt); rowTotalLast.Add(ns.ToString(Vf.LevFormatUI)); rowTotalLast.Add(sumaOdt.ToString(Vf.LevFormatUI)); rowTotalLast.Add(sumaOct.ToString(Vf.LevFormatUI)); rowTotalLast.Add(ks.ToString(Vf.LevFormatUI)); } else { var ks = sumansdt + sumaOdt - (sumansct + sumaOct); var ns = sumansdt - (sumansct); rowTotalLast.Add(ns.ToString(Vf.LevFormatUI)); rowTotalLast.Add(sumaOdt.ToString(Vf.LevFormatUI)); rowTotalLast.Add(sumaOct.ToString(Vf.LevFormatUI)); rowTotalLast.Add(ks.ToString(Vf.LevFormatUI)); } items.Add(rowTotalLast); } return(items); }
internal static IEnumerable <IEnumerable <string> > GetDetailsContoToAccEx(int id, int typ, string filter) { List <AccItemSaldo> rez = new List <AccItemSaldo>(); List <List <string> > rez1 = new List <List <string> >(); List <string> titles = new List <string>(); var dbman = new DBManager(DataProvider.Firebird); dbman.ConnectionString = Entrence.ConnectionString; try { string s = string.Format( "SELECT c.\"Id\",c.\"Oborot\",c.\"Date\",m.LOOKUPFIELDKEY,m.LOOKUPID,m.\"VALUE\",lf.\"Name\",m.VALUEDATE,c.\"DebitAccount\",m.LOOKUPVAL FROM \"conto\" c inner join CONTOMOVEMENT m on m.CONTOID=c.\"Id\"inner join \"lookupsfield\" lf on m.ACCFIELDKEY=lf.\"Id\" where (c.\"FirmId\"={0} and c.\"Date\">='1.1.{1}' and c.\"Date\"<='31.12.{1}' and m.ACCID={2}) order by c.\"Id\",m.SORTORDER", ConfigTempoSinglenton.GetInstance().CurrentFirma.Id, ConfigTempoSinglenton.GetInstance().WorkDate.Year, id); dbman.Open(); dbman.ExecuteReader(CommandType.Text, s); string command = string.Format("SELECT count(ca.\"AnaliticalNameID\") " + " FROM \"accounts\" a " + "inner join \"analiticalaccount\" aa on a.\"AnaliticalNum\"=aa.\"Id\"" + "inner join \"analiticalaccounttype\" aat on aa.\"TypeID\"=aat.\"Id\"" + "inner join \"conectoranaliticfield\" ca on aa.\"Id\"=ca.\"AnaliticalNameID\"" + "inner join \"lookupsfield\" af on af.\"Id\"=ca.\"AnaliticalFieldId\" " + "left outer join MAPACCTOLOOKUP l on l.ACCOUNTS_ID=a.\"Id\" and l.ANALITIC_ID=aa.\"Id\" and l.ANALITIC_FIELD_ID=ca.\"AnaliticalFieldId\"" + " where a.\"Id\"={0}", id); int count = (int)dbman.ExecuteScalar(CommandType.Text, command); bool change = false; bool first = true; bool firstrow = true; bool ima = false; AccItemSaldo row = new AccItemSaldo(); row.Type = typ; int oldid = 0, newid = 0; int chikiriki = 0; while (dbman.DataReader.Read()) { ima = true; newid = int.Parse(dbman.DataReader["Id"].ToString()); if (first) { first = false; oldid = newid; int smetka = 0; if (int.TryParse(dbman.DataReader["DebitAccount"].ToString(), out smetka)) { if (smetka == id) { row.IsDebit = true; row.Type = typ; row.Od = decimal.Parse(dbman.DataReader["Oborot"].ToString()); } else { row.Type = typ; row.Oc = decimal.Parse(dbman.DataReader["Oborot"].ToString()); } } } if (oldid != newid) { change = true; } if (change) { if (firstrow) { firstrow = false; } rez.Add(row); row = new AccItemSaldo(); oldid = newid; change = false; int smetka; if (int.TryParse(dbman.DataReader["DebitAccount"].ToString(), out smetka)) { if (smetka == id) { row.IsDebit = true; row.Type = typ; row.Od = decimal.Parse(dbman.DataReader["Oborot"].ToString()); } else { row.Type = typ; row.Oc = decimal.Parse(dbman.DataReader["Oborot"].ToString()); } } chikiriki = 0; } if (chikiriki < count) { string value = dbman.DataReader["VALUE"].ToString(); string lvalue = dbman.DataReader["LOOKUPVAL"].ToString(); string name = dbman.DataReader["Name"].ToString(); row.Details = string.Format("{0}|{1} ", row.Details, value); if (!String.IsNullOrWhiteSpace(lvalue) && !name.Contains("Дата ")) { row.Details = string.Format("{0}|{1} ", row.Details, lvalue); } if (firstrow) { titles.Add(name); } chikiriki++; } } if (ima) { rez.Add(row); } else { return(null); } } catch (Exception ex) { Logger.Instance().WriteLogError(ex.Message, "internal static IEnumerable<IEnumerable<string>> GetDetailsContoToAcc(int id,int typ,string filter)"); dbman.RollBackTransaction(); } finally { dbman.Dispose(); } titles.Add("НС"); titles.Add("ОД"); titles.Add("ОК"); titles.Add("КС"); rez1.Add(titles); var query = (from t in rez group t by new { t.Details, t.Type } into grp select new AccItemSaldo { Details = grp.Key.Details, Type = grp.Key.Type, //Nsc=grp.Sum(t => t.Nsc), //Nsd = grp.Sum(t => t.Nsc), Oc = grp.Sum(t => t.Oc), Od = grp.Sum(t => t.Od), //Ksd = grp.Sum(t => t.Ksd), //Ksc = grp.Sum(t => t.Ksc), }).ToList(); // var rezi = GetAllAnaliticSaldos(id, Entrence.CurrentFirma.Id); foreach (AccItemSaldo accItemSaldo in query) { var saldo = rezi.FirstOrDefault( m => m.NameContragent == accItemSaldo.NameContragent && m.NumInvoise == accItemSaldo.NInvoise); if (saldo != null) { accItemSaldo.Nsd = saldo.BeginSaldoDebit; accItemSaldo.Nsc = saldo.BeginSaldoCredit; } } //foreach (var items in rezi) //{ // var saldo = // query.FirstOrDefault( // m => m.Details == items.Details); // if (saldo == null) // { // var item = new AccItemSaldo(); // item.NInvoise = items.NumInvoise; // item.NameContragent = items.NameContragent; // item.Nsc = items.BeginSaldoCredit; // item.Nsd = items.BeginSaldoDebit; // item.Data = items.Date.ToShortDateString(); // item.Type = typ; // item.Details = items.Details; // query.Add(item); // } //} if (!string.IsNullOrWhiteSpace(filter)) { foreach (var item in query.Where(e => e.Details != null && e.Details.StartsWith(filter)).OrderBy(e => e.Details)) { var det = item.Details.Split('|'); List <string> newrow = det.Skip(1).ToList(); decimal saldo = 0; if (item.Type == 1) { saldo = item.Nsd - item.Nsc; } else { saldo = item.Nsc - item.Nsd; } newrow.Add(saldo.ToString(Vf.LevFormatUI)); newrow.Add(item.Od.ToString(Vf.LevFormatUI)); newrow.Add(item.Oc.ToString(Vf.LevFormatUI)); decimal ksaldo = 0; if (item.Type == 1) { ksaldo = item.Nsd + item.Od - item.Nsc - item.Oc; } else { ksaldo = item.Nsc + item.Oc - item.Nsd - item.Od; } newrow.Add(ksaldo.ToString(Vf.LevFormatUI)); rez1.Add(newrow); } } else { foreach (var item in query.OrderBy(e => e.Details)) { if (item.Details != null) { var det = item.Details.Split('|'); List <string> newrow = det.Skip(1).ToList(); decimal saldo = 0; if (item.Type == 1) { saldo = item.Nsd - item.Nsc; } else { saldo = item.Nsc - item.Nsd; } newrow.Add(saldo.ToString(Vf.LevFormatUI)); newrow.Add(item.Od.ToString(Vf.LevFormatUI)); newrow.Add(item.Oc.ToString(Vf.LevFormatUI)); decimal ksaldo = 0; if (item.Type == 1) { ksaldo = item.Nsd + item.Od - item.Nsc - item.Oc; } else { ksaldo = item.Nsc + item.Oc - item.Nsd - item.Od; } newrow.Add(ksaldo.ToString(Vf.LevFormatUI)); rez1.Add(newrow); } } } return(rez1); }