private void printButton_Click(object sender, EventArgs e) { if (this.dataGridView.CurrentRow != null) { DokumentAnalizyZwrotu dokument = (DokumentAnalizyZwrotu)this.dataGridView.CurrentRow.DataBoundItem; var template = Enova.Business.Old.Core.Configuration.GetSetting("EnovaFKReport"); if (string.IsNullOrEmpty(template)) { throw new Exception("Nie skonfigurowano wzorca wydruku dla korekty sprzedaży"); } template = Path.IsPathRooted(template) ? template : Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Aspx", template); try { this.Cursor = Cursors.WaitCursor; using (var session = Enova.API.EnovaService.Instance.CreateSession()) session.GetModule <Enova.API.Handel.HandelModule>().DrukujDokument(null, dokument.KorektaGuid, template); //Enova.API.EnovaServiceAttribute.EnovaService.HandelModule.DrukujDokument(this, dokument.KorektaGuid, template); } catch (Exception ex) { throw ex; } finally { this.Cursor = Cursors.Default; } } }
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(); } } }