예제 #1
0
        public static async Task <byte[]> FeltetelesSzerzodesAsync(ossContext context, string sid, int projektKod)
        {
            SessionBll.Check(context, sid);
            await CsoportDal.JogeAsync(context, JogKod.PROJEKT);

            var entityProjekt = await ProjektDal.GetAsync(context, projektKod);

            var entityParticio = await ParticioDal.GetAsync(context);

            var pc      = JsonConvert.DeserializeObject <ProjektConf>(entityParticio.Projekt);
            var iratKod = pc.FeltetelesSzerzodesIratkod != null ? (int)pc.FeltetelesSzerzodesIratkod :
                          throw new Exception(string.Format(Messages.ParticioHiba, "FeltetelesSzerzodesIratkod"));

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

            NumberFormatInfo nfi = new CultureInfo("hu-HU", false).NumberFormat;

            nfi.NumberGroupSeparator = ".";

            var arNetto     = entityProjekt.Vallalasiarnetto;
            var elolegNetto = (int)(arNetto * (decimal)0.7) / 1000 * 1000;

            ComponentInfo.SetLicense(serialKey);

            DocumentModel document;

            using (var msDocx = new MemoryStream())
            {
                msDocx.Write(original.b, 0, original.b.Count());
                document = DocumentModel.Load(msDocx, GemBox.Document.LoadOptions.DocxDefault);
            }

            var mezoertekek = new
            {
                UGYFELNEV            = entityProjekt.UgyfelkodNavigation.Nev,
                UGYFELCIM            = UgyfelBll.Cim(entityProjekt.UgyfelkodNavigation),
                TELEFONSZAM          = entityProjekt.UgyfelkodNavigation.Telefon,
                DC                   = entityProjekt.Dckw.ToString(CultureInfo.CurrentCulture),
                NAPELEM              = entityProjekt.Napelem,
                INVERTER             = entityProjekt.Inverter,
                TELEPITESICIM        = entityProjekt.Telepitesicim,
                KIVITELEZESIHATARIDO = entityProjekt.Kivitelezesihatarido.Value.ToShortDateString(),
                MUNKATERULETATADASA  = DateTime.Now.Date.AddDays(1).ToShortDateString(),
                ARNETTO              = (arNetto - 75000).ToString("#,#", nfi),
                ARBRUTTO             = Calc.RealRound((arNetto - 75000) * (decimal)1.27, 1m).ToString("#,#", nfi),
                DATUM                = DateTime.Now.Date.ToShortDateString()
            };

            document.MailMerge.Execute(mezoertekek);

            byte[] result;

            using (var msDocx = new MemoryStream())
            {
                document.Save(msDocx, GemBox.Document.SaveOptions.DocxDefault);
                result = msDocx.ToArray();
            }

            return(result);
        }
예제 #2
0
        private static UgyfelterLogDto Calc(Ugyfelterlog entity)
        {
            var result = ObjectUtils.Convert <Ugyfelterlog, UgyfelterLogDto>(entity);

            result.Ugyfelnev = entity.UgyfelkodNavigation.Nev;
            result.Ugyfelcim = UgyfelBll.Cim(entity.UgyfelkodNavigation);

            return(result);
        }
예제 #3
0
        private static ProjektDto Calc(Models.Projekt entity)
        {
            var result = ObjectUtils.Convert<Models.Projekt, ProjektDto>(entity);

            result.Penznem = entity.PenznemkodNavigation.Penznem1;
            result.Ugyfelnev = entity.UgyfelkodNavigation.Nev;
            result.Ugyfelcim = UgyfelBll.Cim(entity.UgyfelkodNavigation);
            result.Ugyfeltelefonszam = entity.UgyfelkodNavigation.Telefon;
            result.Ugyfelemail = entity.UgyfelkodNavigation.Email;

            return result;
        }
예제 #4
0
        private static IratDto Calc(Models.Irat entity)
        {
            var result = ObjectUtils.Convert <Models.Irat, IratDto>(entity);

            result.Irattipus = entity.IrattipuskodNavigation.Irattipus1;
            if (entity.UgyfelkodNavigation != null)
            {
                result.Ugyfelnev = entity.UgyfelkodNavigation.Nev;
                result.Ugyfelcim = UgyfelBll.Cim(entity.UgyfelkodNavigation);
            }

            return(result);
        }
예제 #5
0
        public static async Task <byte[]> KeszrejelentesMvmemaszAsync(ossContext context, string sid, int projektKod)
        {
            SessionBll.Check(context, sid);
            await CsoportDal.JogeAsync(context, JogKod.PROJEKT);

            var entityProjekt = await ProjektDal.GetAsync(context, projektKod);

            var entityParticio = await ParticioDal.GetAsync(context);

            var pc      = JsonConvert.DeserializeObject <ProjektConf>(entityParticio.Projekt);
            var iratKod = pc.KeszrejelentesMvmemaszIratkod != null ? (int)pc.KeszrejelentesMvmemaszIratkod :
                          throw new Exception(string.Format(Messages.ParticioHiba, "KeszrejelentesMvmemaszIratkod"));

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

            ComponentInfo.SetLicense(serialKey);

            DocumentModel document;

            using (var msDocx = new MemoryStream())
            {
                msDocx.Write(original.b, 0, original.b.Count());
                document = DocumentModel.Load(msDocx, GemBox.Document.LoadOptions.DocxDefault);
            }

            var mezoertekek = new
            {
                UGYFELNEV     = entityProjekt.UgyfelkodNavigation.Nev,
                UGYFELCIM     = UgyfelBll.Cim(entityProjekt.UgyfelkodNavigation),
                TELEPITESICIM = entityProjekt.Telepitesicim,
                INVERTER      = entityProjekt.Inverter,
                TELEFONSZAM   = entityProjekt.UgyfelkodNavigation.Telefon,
                EMAIL         = entityProjekt.UgyfelkodNavigation.Email,
                AC            = entityProjekt.Ackva.ToString(CultureInfo.CurrentCulture),
                DATUM         = DateTime.Now.Date.ToShortDateString()
            };

            document.MailMerge.Execute(mezoertekek);

            byte[] result;

            using (var msDocx = new MemoryStream())
            {
                document.Save(msDocx, GemBox.Document.SaveOptions.DocxDefault);
                result = msDocx.ToArray();
            }

            return(result);
        }
예제 #6
0
        public static async Task <int> AjanlatKesztitesAsync(ossContext context, string sid,
                                                             int projektKod, List <AjanlatBuf> ajanlatBuf, List <SzMT> fi)
        {
            SessionBll.Check(context, sid);
            await CsoportDal.JogeAsync(context, JogKod.AJANLATKESZITES);

            ExcelFile      _excel;
            ExcelWorksheet _sheet;

            SpreadsheetInfo.SetLicense("ERDD-TN5J-YKX9-H1KX");

            var ervenyes             = SzMTUtils.GetDate(fi, Szempont.Ervenyes);
            var tajolas              = SzMTUtils.GetString(fi, Szempont.Tajolas);
            var termeles             = SzMTUtils.GetInt(fi, Szempont.Termeles);
            var megjegyzes           = SzMTUtils.GetString(fi, Szempont.Megjegyzes);
            var szuksegesAramerosseg = SzMTUtils.GetString(fi, Szempont.SzuksegesAramerosseg);

            var entityProjekt = await ProjektDal.GetAsync(context, projektKod);

            var entityParticio = await ParticioDal.GetAsync(context);

            var pc      = JsonConvert.DeserializeObject <ProjektConf>(entityParticio.Projekt);
            var iratKod = pc.AjanlatIratkod != null ? (int)pc.AjanlatIratkod :
                          throw new Exception(string.Format(Messages.ParticioHiba, "AjanlatIratkod"));

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

            using (var msExcel = new MemoryStream())
            {
                msExcel.Write(fb.b, 0, fb.b.Count());
                msExcel.Position = 0;
                _excel           = ExcelFile.Load(msExcel, GemBox.Spreadsheet.LoadOptions.XlsDefault);
            }
            if (_excel.Worksheets.Count != 1)
            {
                throw new Exception("Az alapbizonylat nincs előkészítve!");
            }
            _sheet = _excel.Worksheets[0];

            XlsUtils.Mezo(_sheet, 7, 3, entityProjekt.UgyfelkodNavigation.Nev);
            XlsUtils.Mezo(_sheet, 7, 8, DateTime.Now.Date.ToShortDateString());
            XlsUtils.Mezo(_sheet, 8, 8, ervenyes.Date.ToShortDateString());
            var ugyfelCim = UgyfelBll.Cim(entityProjekt.UgyfelkodNavigation).Trim(' ', ',');

            XlsUtils.Mezo(_sheet, 10, 3, ugyfelCim);

            var napelem              = ajanlatBuf.First(s => s.AjanlatTetelTipus == AjanlatTetelTipus.Napelem);
            var inverter             = ajanlatBuf.First(s => s.AjanlatTetelTipus == AjanlatTetelTipus.Inverter);
            var mechanikaiSzerelveny =
                ajanlatBuf.First(s => s.AjanlatTetelTipus == AjanlatTetelTipus.MechanikaiSzerelveny);
            var villamosSzerelveny = ajanlatBuf.First(s => s.AjanlatTetelTipus == AjanlatTetelTipus.VillamosSzerelveny);
            var ugyintezes         = ajanlatBuf.First(s => s.AjanlatTetelTipus == AjanlatTetelTipus.Ugyintezes);
            var munkadij           = ajanlatBuf.First(s => s.AjanlatTetelTipus == AjanlatTetelTipus.Munkadij);
            var tuzesetiKapcsolo   = ajanlatBuf.First(s => s.AjanlatTetelTipus == AjanlatTetelTipus.TuzesetiKapcsolo);

            var dckW  = Calc.RealRound(napelem.OsszTeljesitmeny / 1000, 0.01m);
            var ackVa = Calc.RealRound(inverter.OsszTeljesitmeny / 1000, 0.01m);

            XlsUtils.Mezo(_sheet, 13, 3, dckW);
            XlsUtils.Mezo(_sheet, 14, 3, ackVa);
            XlsUtils.Mezo(_sheet, 15, 3, szuksegesAramerosseg);

            XlsUtils.Mezo(_sheet, 13, 5, tajolas);
            XlsUtils.Mezo(_sheet, 14, 5, "min. " + (dckW * termeles).ToString("#0.") +
                          " kWh, azaz " + (dckW * termeles * 40).ToString("#0.") + " Ft");

            XlsUtils.Mezo(_sheet, 18, 3, napelem.CikkNev);
            XlsUtils.Mezo(_sheet, 18, 5, napelem.Mennyiseg);
            XlsUtils.Mezo(_sheet, 18, 6, napelem.EgysegAr);

            XlsUtils.Mezo(_sheet, 19, 3, inverter.CikkNev);
            XlsUtils.Mezo(_sheet, 19, 5, inverter.Mennyiseg);
            XlsUtils.Mezo(_sheet, 19, 6, inverter.EgysegAr);

            XlsUtils.Mezo(_sheet, 20, 3, mechanikaiSzerelveny.CikkNev);
            XlsUtils.Mezo(_sheet, 20, 5, mechanikaiSzerelveny.Mennyiseg);
            XlsUtils.Mezo(_sheet, 20, 6, mechanikaiSzerelveny.EgysegAr);

            XlsUtils.Mezo(_sheet, 21, 3, villamosSzerelveny.CikkNev);
            XlsUtils.Mezo(_sheet, 21, 5, villamosSzerelveny.Mennyiseg);
            XlsUtils.Mezo(_sheet, 21, 6, villamosSzerelveny.EgysegAr);

            XlsUtils.Mezo(_sheet, 22, 7, ugyintezes.EgysegAr);

            XlsUtils.Mezo(_sheet, 23, 7, munkadij.EgysegAr);

            XlsUtils.Mezo(_sheet, 26, 7, tuzesetiKapcsolo.EgysegAr);

            var gar =
                "A napelemekre {0} év gyári, az inverterre {1} év gyári, mechanikai szerelvényre {2} év, villamos szerelvényre {3} év, kivitelezésre {4} év garancia érvényes.";

            XlsUtils.Mezo(_sheet, 33, 3,
                          string.Format(gar, napelem.Garancia, inverter.Garancia, mechanikaiSzerelveny.Garancia,
                                        villamosSzerelveny.Garancia, munkadij.Garancia));

            var felhasznalo = await FelhasznaloDal.GetAsync(context, context.CurrentSession.Felhasznalokod);

            XlsUtils.Mezo(_sheet, 8, 3, $"{felhasznalo.Nev}, {felhasznalo.Telefon}, {felhasznalo.Email}");

            //az excel mezőkkiértékelése
            _sheet.Calculate();

            const string irattipus    = "Ajánlat";
            var          lstIrattipus = (await IrattipusDal.ReadAsync(context, irattipus)).Where(s => s.Irattipus1 == irattipus).ToList();

            if (lstIrattipus.Count != 1)
            {
                throw new Exception($"Hiányzó irattipus: {irattipus}!");
            }

            var ujIrat = new Models.Irat
            {
                Irany        = "Ki",
                Keletkezett  = DateTime.Now.Date,
                Irattipuskod = lstIrattipus[0].Irattipuskod,
                Ugyfelkod    = entityProjekt.Ugyfelkod,
                Targy        = megjegyzes
            };

            var ujIratKod = await IratDal.AddAsync(context, ujIrat);

            using (var stream = new MemoryStream())
            {
                _excel.Save(stream, SaveOptions.XlsDefault);

                stream.Position = 0;
                var fajlBuf = new FajlBuf
                {
                    Meret      = (int)stream.Length,
                    Ext        = fb.Ext,
                    Hash       = Crypt.MD5Hash(stream),
                    IratKod    = ujIratKod,
                    Megjegyzes = megjegyzes,
                    b          = stream.ToArray()
                };

                await DokumentumBll.FeltoltesAsync(context, sid, fajlBuf);
            }

            return(await ProjektKapcsolatBll.AddIratToProjektAsync(context, sid, projektKod, ujIratKod));
        }
예제 #7
0
        public async Task <byte[]> ProjektAsync(ossContext context, string sid,
                                                int statusz, string nev)
        {
            SessionBll.Check(context, sid);
            await CsoportDal.JogeAsync(context, JogKod.LEKERDEZES);

            SpreadsheetInfo.SetLicense(licKey);

            BeginReport("Projektek");

            var rowStart = 3;
            var rowNum   = rowStart;

            Fejlec(rowNum, 0, "No");

            Fejlec(rowNum, 1, "Műszaki állapot");
            Fejlec(rowNum, 2, "Ügyfél");
            Fejlec(rowNum, 3, "Cím");
            Fejlec(rowNum, 4, "Telepítési cím");

            Fejlec(rowNum, 5, "Telefon");
            Fejlec(rowNum, 6, "Email");

            Fejlec(rowNum, 7, "A projekt jellege");
            Fejlec(rowNum, 8, "Inverter");
            Fejlec(rowNum, 9, "");
            Fejlec(rowNum, 10, "Napelem");
            Fejlec(rowNum, 11, "");
            Fejlec(rowNum, 12, "Méret, kW");
            ++rowNum;

            var riporttetelek = await RiportDal.ProjektAsync(context, statusz);

            foreach (var tetel in riporttetelek)
            {
                Mezo(rowNum, 0, tetel.Projektkod);

                Mezo(rowNum, 1, tetel.Muszakiallapot);
                Mezo(rowNum, 2, tetel.UgyfelkodNavigation.Nev);
                Mezo(rowNum, 3, UgyfelBll.Cim(tetel.UgyfelkodNavigation));
                Mezo(rowNum, 4, tetel.Telepitesicim);

                Mezo(rowNum, 5, tetel.UgyfelkodNavigation.Telefon);
                Mezo(rowNum, 6, tetel.UgyfelkodNavigation.Email);

                Mezo(rowNum, 7, tetel.Projektjellege);
                Mezo(rowNum, 8, tetel.Inverter);
                Mezo(rowNum, 9, tetel.Inverterallapot);
                Mezo(rowNum, 10, tetel.Napelem);
                Mezo(rowNum, 11, tetel.Napelemallapot);
                Mezo(rowNum, 12, tetel.Dckw);

                ++rowNum;
            }

            AutosizeColumns(rowStart);

            Mezo(0, 0, "Projektek: " + nev);
            Mezo(1, 0, "Dátum: " + DateTime.Now.Date.ToShortDateString());

            return(EndReport());
        }