public static async Task <int> StornoAsync(ossContext context, string sid, BizonylatDto dto) { SessionBll.Check(context, sid); await CsoportDal.JogeAsync(context, JogKod.BIZONYLATMOD); await BizonylatDal.Lock(context, dto.Bizonylatkod, dto.Modositva); //a fej/tételek/áfa lekérése/módosítása/hozzáadása lépésenként var stornozando = await BizonylatDal.GetAsync(context, dto.Bizonylatkod); if (stornozando.Bizonylatszam == null) { throw new Exception("Lezáratlan bizonylatot nem lehet stornozni!"); } if (stornozando.Ezstornozott) { throw new Exception("A bizonylat már stornozott!"); } //ha díjbekérő -> nem jön létre másik bizonylat if (stornozando.Bizonylattipuskod == (int)BizonylatTipus.DijBekero) { stornozando.Ezstornozott = true; await BizonylatDal.UpdateAsync(context, stornozando); return(0); } var stornozo = ObjectUtils.Clone(stornozando); stornozo.Bizonylatszam = GenerateBizonylatszam(context, stornozo.Bizonylattipuskod); stornozo.Megjegyzesfej = $"A(z) {stornozando.Bizonylatszam} számú bizonylat stornója."; stornozo.Netto = -stornozo.Netto; stornozo.Afa = -stornozo.Afa; stornozo.Brutto = -stornozo.Brutto; stornozo.Termekdij = -stornozo.Termekdij; stornozo.Ezstornozo = true; stornozo.Stornozottbizonylatkod = stornozando.Bizonylatkod; stornozo.Bizonylatkelte = DateTime.Today; // Stornónál a teljesítés kelte és a fizetési határidő ugyanaz kell hogy maradjon! stornozo.Azaz = Azaz.Szovegge(stornozo.Brutto); await BizonylatDal.AddAsync(context, stornozo); //a tételek lekérése/másolása/módosítása/hozzáadása lépésenként var stornozoTetel = BizonylatTetelDal.Select(context, dto.Bizonylatkod); foreach (var t in stornozoTetel) { var tetel = ObjectUtils.Clone(t); tetel.Bizonylatkod = stornozo.Bizonylatkod; tetel.Mennyiseg = -tetel.Mennyiseg; tetel.Netto = -tetel.Netto; tetel.Afa = -tetel.Afa; tetel.Brutto = -tetel.Brutto; tetel.Ossztomegkg = -tetel.Ossztomegkg; tetel.Termekdij = -tetel.Termekdij; await BizonylatTetelDal.AddAsync(context, tetel); } //az áfa lekérése/másolása/módosítása/hozzáadása lépésenként var stornozoAfa = BizonylatAfaDal.Select(context, dto.Bizonylatkod); foreach (var t in stornozoAfa) { var afa = ObjectUtils.Clone(t); afa.Bizonylatkod = stornozo.Bizonylatkod; afa.Netto = -afa.Netto; afa.Afa = -afa.Afa; afa.Brutto = -afa.Brutto; await BizonylatAfaDal.AddAsync(context, afa); } //termékdíj másolása var stornozotermekdij = BizonylatTermekdijDal.Select(context, dto.Bizonylatkod); foreach (var t in stornozotermekdij) { var termekdij = ObjectUtils.Clone(t); termekdij.Bizonylatkod = stornozo.Bizonylatkod; termekdij.Ossztomegkg = -termekdij.Ossztomegkg; termekdij.Termekdij = -termekdij.Termekdij; await BizonylatTermekdijDal.AddAsync(context, termekdij); } //az eredetiben ennyi módosítás stornozando.Ezstornozott = true; stornozando.Stornozobizonylatkod = stornozo.Bizonylatkod; await BizonylatDal.UpdateAsync(context, stornozando); return(stornozo.Bizonylatkod); }
public static async Task <int> SaveAsync(ossContext context, string sid, BizonylatComplexDto complexDto) { SessionBll.Check(context, sid); await CsoportDal.JogeAsync(context, JogKod.BIZONYLATMOD); if (!string.IsNullOrEmpty(complexDto.Dto.Bizonylatszam)) { throw new Exception($"Ez a bizonylat már nem módosítható: {complexDto.Dto.Bizonylatszam}!"); } foreach (var l in complexDto.LstTetelDto) { BizonylatUtils.BizonylattetelCalc(l); } BizonylatUtils.SumEsAfaEsTermekdij(complexDto.Dto, complexDto.LstTetelDto, complexDto.LstAfaDto, complexDto.LstTermekdijDto); Models.Bizonylat entity; int bizonylatKod; if (complexDto.Dto.Bizonylatkod == 0) { //a fej még nem volt soha kiírva entity = ObjectUtils.Convert <BizonylatDto, Models.Bizonylat>(complexDto.Dto); bizonylatKod = await BizonylatDal.AddAsync(context, entity); } else { //updateelni a fejet bizonylatKod = complexDto.Dto.Bizonylatkod; await BizonylatDal.Lock(context, bizonylatKod, complexDto.Dto.Modositva); entity = await BizonylatDal.GetAsync(context, bizonylatKod); ObjectUtils.Update(complexDto.Dto, entity); await BizonylatDal.UpdateAsync(context, entity); //törölni az esetleges létező tételt-áfát- var entitesTetel = BizonylatTetelDal.Select(context, bizonylatKod); foreach (var l in entitesTetel) { await BizonylatTetelDal.DeleteAsync(context, l); } var entitesAfa = BizonylatAfaDal.Select(context, bizonylatKod); foreach (var l in entitesAfa) { await BizonylatAfaDal.DeleteAsync(context, l); } var entitesTermekdij = BizonylatTermekdijDal.Select(context, bizonylatKod); foreach (var l in entitesTermekdij) { await BizonylatTermekdijDal.DeleteAsync(context, l); } } //beírni a bizonylatkódot a tételbe-áfába-termékdíjba foreach (var l in complexDto.LstTetelDto) { l.Bizonylattetelkod = 0; l.Bizonylatkod = bizonylatKod; var entityTetel = ObjectUtils.Convert <BizonylatTetelDto, Models.Bizonylattetel>(l); await BizonylatTetelDal.AddAsync(context, entityTetel); } foreach (var l in complexDto.LstAfaDto) { l.Bizonylatafakod = 0; l.Bizonylatkod = bizonylatKod; var entityAfa = ObjectUtils.Convert <BizonylatAfaDto, Models.Bizonylatafa>(l); await BizonylatAfaDal.AddAsync(context, entityAfa); } foreach (var l in complexDto.LstTermekdijDto) { l.Bizonylattermekdijkod = 0; l.Bizonylatkod = bizonylatKod; var entityTermekdij = ObjectUtils.Convert <BizonylatTermekdijDto, Models.Bizonylattermekdij>(l); await BizonylatTermekdijDal.AddAsync(context, entityTermekdij); } return(bizonylatKod); }