Пример #1
0
        private static async Task UpdateNyomtatottPeldanyAsync(ossContext context, int bizonylatKod, int peldanyszam)
        {
            // már lockolva van
            var entity = await BizonylatDal.GetAsync(context, bizonylatKod);

            entity.Nyomtatottpeldanyokszama = peldanyszam;
            await BizonylatDal.UpdateAsync(context, entity);
        }
Пример #2
0
        public static async Task <int> UjBizonylatToProjektAsync(ossContext context, string sid, int projektKod,
                                                                 BizonylatDto dto)
        {
            SessionBll.Check(context, sid);
            await CsoportDal.JogeAsync(context, JogKod.PROJEKT);

            var entity       = ObjectUtils.Convert <BizonylatDto, Models.Bizonylat>(dto);
            var bizonylatKod = await BizonylatDal.AddAsync(context, entity);

            return(await AddBizonylatToProjektAsync(context, sid, projektKod, bizonylatKod));
        }
Пример #3
0
        public static async Task <string> AdatszolgaltatasAsync(ossContext context, string sid,
                                                                NGMMode mode, DateTime szamlaKelteTol, DateTime szamlaKelteIg, string szamlaSzamTol, string szamlaSzamIg)
        {
            SessionBll.Check(context, sid);
            await CsoportDal.JogeAsync(context, JogKod.LEKERDEZES);

            //az xml-hez mind a 4 paraméter szükséges
            List <Models.Bizonylat> entities;

            switch (mode)
            {
            case NGMMode.SzamlaKelte:
                entities = await BizonylatDal.Select_SzamlaKelteAsync(context, szamlaKelteTol, szamlaKelteIg);

                szamlaSzamTol = entities.Select(s => s.Bizonylatszam).Min();
                szamlaSzamIg  = entities.Select(s => s.Bizonylatszam).Max();
                break;

            case NGMMode.SzamlaSzam:
                entities = await BizonylatDal.Select_SzamlaSzamAsync(context, szamlaSzamTol, szamlaSzamIg);

                szamlaKelteTol = entities.Select(s => s.Bizonylatkelte).Min();
                szamlaKelteIg  = entities.Select(s => s.Bizonylatkelte).Max();
                break;

            default:
                throw new Exception($"{mode}: ismeretlen NGMMode!");
            }

            if (entities.Count == 0)
            {
                throw new Exception("A megadott tartományban nincsenek számlák!");
            }

            var szamlakXml = new Szamlak
            {
                EloallitasDatuma = DateTime.Now,
                KezdoSzamlaSzama = szamlaSzamTol,
                ZaroSzamlaSzama  = szamlaSzamIg,
                KezdoDatum       = szamlaKelteTol,
                ZaroDatum        = szamlaKelteIg
            };

            foreach (var peldany in entities)
            {
                var ngmSzamla = new Szamla();
                ngmSzamla.Fejlec.SzamlaSorszama            = peldany.Bizonylatszam;
                ngmSzamla.Fejlec.SzamlaTipusa              = peldany.Ezstornozo ? SzamlaTipusok.ErvenytelenitoSzamla : SzamlaTipusok.Szamla;
                ngmSzamla.Fejlec.SzamlaKelte               = peldany.Bizonylatkelte;
                ngmSzamla.Fejlec.TeljesitesDatuma          = peldany.Teljesiteskelte;
                ngmSzamla.SzamlaKibocsato.Adoszam          = $"{peldany.Szallitoadotorzsszam}-{peldany.Szallitoadoafakod}-{peldany.Szallitoadomegyekod}";
                ngmSzamla.SzamlaKibocsato.Kisadozo         = false;
                ngmSzamla.SzamlaKibocsato.Nev              = peldany.Szallitonev;
                ngmSzamla.SzamlaKibocsato.Cim.Iranyitoszam = peldany.Szallitoiranyitoszam;
                ngmSzamla.SzamlaKibocsato.Cim.Telepules    = peldany.Szallitohelysegnev;
                // TODO ez több partíció esetén nem jó!!
                ngmSzamla.SzamlaKibocsato.Cim.KozteruletNeve    = "Túzok";
                ngmSzamla.SzamlaKibocsato.Cim.KozteruletJellege = "utca";
                ngmSzamla.SzamlaKibocsato.Cim.Hazszam           = "42.";
                ngmSzamla.SzamlaKibocsato.EgyeniVallalkozo      = false;
                ngmSzamla.SzamlaBefogado.Adoszam          = peldany.Ugyfeladoszam;
                ngmSzamla.SzamlaBefogado.KozossegiAdoszam = string.Empty;
                ngmSzamla.SzamlaBefogado.Nev = peldany.Ugyfelnev;
                ngmSzamla.SzamlaBefogado.Cim.Iranyitoszam      = peldany.Ugyfeliranyitoszam;
                ngmSzamla.SzamlaBefogado.Cim.Telepules         = peldany.Ugyfelhelysegnev;
                ngmSzamla.SzamlaBefogado.Cim.KozteruletNeve    = peldany.Ugyfelkozterulet;
                ngmSzamla.SzamlaBefogado.Cim.KozteruletJellege = peldany.Ugyfelkozterulettipus;
                ngmSzamla.SzamlaBefogado.Cim.Hazszam           = peldany.Ugyfelhazszam;

                foreach (var tetel in peldany.Bizonylattetel)
                {
                    var tszt = new TermekSzolgaltatasTetel
                    {
                        Megnevezes              = tetel.Megnevezes,
                        BesorolasiSzam          = "-",
                        Mennyiseg               = tetel.Mennyiseg,
                        Mertekegyseg            = tetel.Me,
                        KozvetitettSzolgaltatas = true,
                        NettoAr       = tetel.Netto,
                        NettoEgysegar = tetel.Egysegar,
                        AdoKulcs      = tetel.Afamerteke,
                        AdoErtek      = tetel.Afa,
                        BruttoAr      = tetel.Brutto
                    };
                    ngmSzamla.TermekSzolgaltatasTetelek.Add(tszt);
                }

                ngmSzamla.NemKotelezo.FizetesModja     = peldany.Fizetesimod;
                ngmSzamla.NemKotelezo.FizetesiHatarido = peldany.Fizetesihatarido;
                ngmSzamla.NemKotelezo.SzamlaPenzneme   = peldany.Penznem;

                if (ngmSzamla.Fejlec.SzamlaTipusa != SzamlaTipusok.SzamlavalEgyTekintetAlaEsoOkirat)
                {
                    foreach (var afabontas in peldany.Bizonylatafa)
                    {
                        ngmSzamla.Osszesites.AfaRovatok.Add(new AfaRovat
                        {
                            NettoAr  = afabontas.Netto,
                            Adokulcs = afabontas.Afamerteke,
                            AdoErtek = afabontas.Afa,
                            BruttoAr = afabontas.Brutto
                        });
                    }
                    ngmSzamla.Osszesites.Vegosszeg.NettoArOsszesen = peldany.Netto;
                    ngmSzamla.Osszesites.Vegosszeg.AfaOsszesen     = peldany.Afa;
                    ngmSzamla.Osszesites.Vegosszeg.BruttoOsszesen  = peldany.Brutto;
                }

                szamlakXml.SzamlakAdatai.Add(ngmSzamla);
            }

            var result = "";

            using (var sw = new StringWriter())
            {
                var xwsettings = new XmlWriterSettings
                {
                    CheckCharacters     = true,
                    CloseOutput         = true,
                    Encoding            = Encoding.UTF8,
                    Indent              = true,
                    IndentChars         = " ",
                    NewLineChars        = Environment.NewLine,
                    NewLineOnAttributes = false,
                    NewLineHandling     = NewLineHandling.Entitize
                };

                using (var xw = XmlWriter.Create(sw, xwsettings))
                    szamlakXml.ToXml(xw);

                result = sw.ToString();
            }

            return(result);
        }
Пример #4
0
        public static async Task <byte[]> NyomtatasAsync(IConfiguration config, ossContext context, string sid,
                                                         int bizonylatKod, BizonylatNyomtatasTipus nyomtatasTipus)
        {
            const string minta = "!!! MINTA !!!";

            SessionBll.Check(context, sid);
            await CsoportDal.JogeBizonylatAsync(context);

            var entityBizonylat = await BizonylatDal.GetComplexAsync(context, bizonylatKod);

            await BizonylatDal.Lock(context, bizonylatKod, entityBizonylat.Modositva);

            if ((nyomtatasTipus == BizonylatNyomtatasTipus.Eredeti ||
                 nyomtatasTipus == BizonylatNyomtatasTipus.Másolat) && entityBizonylat.Bizonylatszam == null)
            {
                throw new Exception("Erről a bizonylatról csak MINTA nyomatási kép készülhet!");
            }

            var entityParticio = await ParticioDal.GetAsync(context);

            var bc          = JsonConvert.DeserializeObject <BizonylatConf>(entityParticio.Bizonylat);
            var iratKod     = bc.BizonylatkepIratkod ?? throw new Exception(string.Format(Messages.ParticioHiba, "BizonylatkepIratkod"));
            var peldanyszam = bc.EredetipeldanyokSzama ?? throw new Exception(string.Format(Messages.ParticioHiba, "EredetipeldanyokSzama"));

            if (peldanyszam <= 0 || peldanyszam > 3)
            {
                throw new Exception($"EredetipeldanyokSzama: Hibás érték, legyen 1, 2 vagy 3, most {peldanyszam} !");
            }
            var masolat = bc.MasolatokSzama ?? throw new Exception(string.Format(Messages.ParticioHiba, "MasolatokSzama"));

            if (masolat <= 0 || masolat > 3)
            {
                throw new Exception($"MasolatokSzama: Hibás érték, legyen 1, 2 vagy 3, most {masolat} !");
            }

            var szamlakep = await IratBll.LetoltesAsync(context, sid, iratKod);

            var v = await VerzioDal.GetAsync(context);

            var fejlec = BizonylatBll.Bl[entityBizonylat.Bizonylattipuskod].BizonylatFejlec;

            if (nyomtatasTipus == BizonylatNyomtatasTipus.Minta)
            {
                fejlec = minta + " - " + fejlec;
            }

            var printer = new BizonylatPrinter();

            printer.Setup(entityBizonylat, szamlakep.b, fejlec, v);

            switch (nyomtatasTipus)
            {
            case BizonylatNyomtatasTipus.Minta:
                printer.UjPeldany("1", minta);
                break;

            case BizonylatNyomtatasTipus.Eredeti:
                for (var i = 1; i <= peldanyszam; i++)
                {
                    printer.UjPeldany(i.ToString(), "Eredeti");
                }

                if (entityBizonylat.Nyomtatottpeldanyokszama == 0)
                {
                    await UpdateNyomtatottPeldanyAsync(context, bizonylatKod, peldanyszam);
                }
                break;

            case BizonylatNyomtatasTipus.Másolat:
                if (entityBizonylat.Nyomtatottpeldanyokszama == 0)
                {
                    throw new Exception("Még nem készült eredeti példány!");
                }

                var sorszamTol = entityBizonylat.Nyomtatottpeldanyokszama + 1;
                var sorszamIg  = sorszamTol + masolat - 1;
                for (var i = sorszamTol; i <= sorszamIg; i++)
                {
                    printer.UjPeldany(i.ToString(), "Másolat");
                }

                await UpdateNyomtatottPeldanyAsync(context, bizonylatKod, sorszamIg);

                break;
            }

            return(printer.Print(config));
        }