private void initPozycjeGrid() { Enova.API.Handel.DokumentHandlowy dokument = this.DataContext.GetData() as Enova.API.Handel.DokumentHandlowy; if (dokument != null) { if (!dokument.Korekta) { IloscOrgColumn.Visible = false; CenaOrgColumn.Visible = false; RabatOrgColumn.Visible = false; } } if (typeof(DokHandlowyContext).IsAssignableFrom(this.DataContext.GetType())) { ((DokHandlowyContext)this.DataContext).InitPozycjeDokGrid(this.pozycjeDokHanGrid); } }
private void acceptButton_Click(object sender, EventArgs e) { if (closeForm) { this.Close(); return; } try { this.Cursor = Cursors.WaitCursor; var service = Enova.API.EnovaService.Instance; foreach (DataGridViewRow row in dataGridView.Rows) { DokumentAnalizyZwrotu d = (DokumentAnalizyZwrotu)row.DataBoundItem; if (d.WystawicKorekte && d.KorektaGuid == Guid.Empty) { Enova.API.Handel.DokumentHandlowy korekta = null; korekta = d.WystawKorekte(d.DataKorekty, d.ZatwierdzicKorekte); if (korekta != null) { d.KorektaGuid = korekta.Guid; row.Cells[this.numerKorektyColumn.Index].Value = korekta.NumerPelny; var korektaZwrot = new Enova.Business.Old.DB.Web.KorektaZwrot() { Zwrot = AnalizaZwrotu.Zwrot, KorektaGuid = korekta.Guid, KorektaNumerPelny = korekta.NumerPelny }; Enova.Business.Old.Core.ContextManager.WebContext.OptimisticSaveChanges(); bool wCalosci = true; foreach (var poz in d.PozycjeKorygowane) { var pozycjeZwrotu = AnalizaZwrotu.Zwrot.Pozycje.Where(p => p.Towar.EnovaGuid == poz.Towar.Guid).ToList(); double ilosc = d.IlosciKorygowane[poz.Guid]; foreach (var pozycjaZwrotu in pozycjeZwrotu) { if (pozycjaZwrotu.IloscSkorygowana == null) { pozycjaZwrotu.IloscSkorygowana = 0; } var pozycjaKorektaZwrot = new Enova.Business.Old.DB.Web.KorektaPozycjaZwrotu() { Korekta = korektaZwrot, PozycjaIdent = pozycjaZwrotu.Ident, PozycjaZwrotu = pozycjaZwrotu }; if (pozycjaZwrotu.Ilosc - pozycjaZwrotu.IloscSkorygowana >= ilosc) { pozycjaKorektaZwrot.Ilosc = ilosc; pozycjaZwrotu.IloscSkorygowana += ilosc; ilosc = 0; } else { pozycjaKorektaZwrot.Ilosc = pozycjaZwrotu.Ilosc - pozycjaZwrotu.IloscSkorygowana.Value; pozycjaZwrotu.IloscSkorygowana += pozycjaKorektaZwrot.Ilosc; ilosc -= pozycjaKorektaZwrot.Ilosc; } Enova.Business.Old.Core.ContextManager.WebContext.OptimisticSaveChanges(); if (ilosc == 0) { break; } } if (wCalosci && ilosc > 0) { wCalosci = false; } } if (d.ZatwierdzicKorekte && !korekta.Magazyn.Firmowy) { if (BAL.Forms.FormManager.Confirm( string.Format("Korekta {0} została wystawiona z magazynu {1}.\r\nCzy wygenerować dokument przesunięcia towaru na główny magazyn?", korekta.NumerPelny, korekta.Magazyn.Nazwa))) { Enova.API.Handel.DokumentHandlowy dh = null; using (var session = service.CreateSession()) { var hm = session.GetModule <Enova.API.Handel.HandelModule>(); var mm = session.GetModule <Enova.API.Magazyny.MagazynyModule>(); var crm = session.GetModule <Enova.API.CRM.CRMModule>(); var tm = session.GetModule <Enova.API.Towary.TowaryModule>(); var def = hm.DefDokHandlowych.Przesuniecie; using (var t = session.CreateTransaction()) { dh = service.CreateObject <Enova.API.Handel.DokumentHandlowy>(); hm.DokHandlowe.AddRow(dh); dh.Definicja = def; dh.Magazyn = (Enova.API.Magazyny.Magazyn)mm.Magazyny[korekta.Magazyn.ID]; dh.MagazynDo = mm.Magazyny.Firma; if (korekta.Data >= DateTime.Now.Date) { dh.Data = korekta.Data; } dh.Opis = "Przesunięcie do korekty " + korekta.NumerPelny; foreach (var poz in korekta.Pozycje) { var ilosc = (int)poz.Ilosc; var iloscKor = poz.PozycjaKorygowana != null ? (int)poz.PozycjaKorygowana.Ilosc : 0; if (poz.PozycjaKorygowana != null && ilosc < iloscKor) { //var pdh = dh.NowaPozycja((Enova.API.Towary.Towar)tm.Towary[poz.Towar.ID], poz.PozycjaKorygowana.Ilosc - poz.Ilosc); var pdh = (Enova.API.Handel.PozycjaDokHandlowego)Enova.API.EnovaService.Instance.CreateObject(typeof(Enova.API.Handel.PozycjaDokHandlowego), null, new object[] { dh }); hm.PozycjeDokHan.AddRow(pdh); pdh.Towar = poz.Towar; pdh.Ilosc = iloscKor - ilosc; //pdh.Ilosc = poz.Ilosc; //pdh.IloscMagazynu = poz.Ilosc; var cena = poz.Towar.OstatniaCenaZakupu; if (cena != null) { pdh.Cena = (decimal)cena.Netto.Value; } } } session.EventsInvoke(); dh.Stan = Enova.API.Handel.StanDokumentuHandlowego.Zatwierdzony; //dh.Stan = Enova.API.Handel.StanDokumentuHandlowego.Bufor; t.Commit(); } session.Save(); } } } } } } var nieskor = this.AnalizaZwrotu.Zwrot.Pozycje.Where(p => p.Deleted == false && p.Synchronizacja != (int)RowSynchronizeOld.NotsynchronizedDelete && (p.IloscSkorygowana == null || p.IloscSkorygowana < p.Ilosc)).Count(); AnalizaZwrotu.Zwrot.SkorygowanyWCalosci = nieskor == 0; AnalizaZwrotu.Zwrot.SetStatus(Enova.Business.Old.DB.Web.TypStatusuZwrotu.Załatwiony); Enova.Business.Old.Core.ContextManager.WebContext.OptimisticSaveChanges(); Enova.Business.Old.Core.ContextManager.WebContext.Refresh(System.Data.Objects.RefreshMode.StoreWins, AnalizaZwrotu.Zwrot); this.closeForm = true; acceptButton.Text = "Zamknij"; this.printButton.Visible = true; } catch (Exception ex) { throw ex; } finally { this.Cursor = Cursors.Default; } if (AnalizaZwrotu.Zwrot.SkorygowanyWCalosci != null && !AnalizaZwrotu.Zwrot.SkorygowanyWCalosci.Value) { if (MessageBox.Show("Zwrot nie został skorygowany w całości.\r\nCzy wygenerować zwrot z pozycji nieskorygowanych?", "AbakTools", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == System.Windows.Forms.DialogResult.Yes) { generujZwrotZNieskorygowanych(); } } }