예제 #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
        public static async Task <UgyfelterDto> UgyfelterCheckAsync(ossContext context, IHubContext <OssHub> hubcontext,
                                                                    IConfiguration config, string linkparam)
        {
            const string uh = "Ügyféltér hiba {0} - értesítse a GridSolar sales-t!";

            UgyfelterParam up;

            try
            {
                up = JsonConvert.DeserializeObject <UgyfelterParam>(StringCipher.Decrypt(linkparam, edKey));
            }
            catch
            {
                throw new Exception(string.Format(uh, 1));
            }
            // adott particióban létezi-e az ügyfél a kiküldési kóddal
            await UgyfelDal.UgyfelterCheckAsync(context, up.Particiokod, up.Ugyfelkod, up.Kikuldesikod);

            var result = new UgyfelterDto();

            try
            {
                result.sid = await LogonBll.BejelentkezesAsync(context, hubcontext,
                                                               config.GetValue <string>("Ugyfelter:user"),
                                                               Crypt.MD5Hash(config.GetValue <string>("Ugyfelter:password")), "", "", "");
            }
            catch
            {
                throw new Exception(string.Format(uh, 2));
            }

            // az Ügyféltér usernek az ügyfél particióját kell tudni választani
            var csoport = (await LogonBll.SzerepkorokAsync(context, result.sid)).Where(s => s.Particiokod == up.Particiokod).ToList();

            if (csoport.Count != 1)
            {
                throw new Exception(string.Format(uh, 3));
            }

            await LogonBll.SzerepkorValasztasAsync(context, result.sid, csoport[0].Particiokod, csoport[0].Csoportkod);

            // ügyféltér log
            await UgyfelterLogDal.AddAsync(context, new Models.Ugyfelterlog {
                Ugyfelkod = up.Ugyfelkod
            });

            result.ugyfelDto = await UgyfelBll.GetAsync(context, result.sid, up.Ugyfelkod);

            result.lstProjektDto = (await ProjektBll.SelectAsync(context, result.sid, 0, int.MaxValue, 0,
                                                                 new List <SzMT> {
                new SzMT {
                    Szempont = Szempont.UgyfelKod, Minta = up.Ugyfelkod.ToString()
                }
            })).Item1;

            return(result);
        }
예제 #4
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;
        }
예제 #5
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);
        }
예제 #6
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);
        }
예제 #7
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));
        }
예제 #8
0
        public static StartupResult Get(ossContext context, string sid)
        {
            SessionBll.Check(context, sid);

            var result = new StartupResult
            {
                Afakulcs_Grid         = AfakulcsBll.GridColumns(),
                Afakulcs_Reszletek    = AfakulcsBll.ReszletekColumns(),
                Felhasznalo_Grid      = FelhasznaloBll.GridColumns(),
                Felhasznalo_Reszletek = FelhasznaloBll.ReszletekColumns(),
                Fizetesimod_Grid      = FizetesimodBll.GridColumns(),
                Fizetesimod_Reszletek = FizetesimodBll.ReszletekColumns(),
                Helyseg_Grid          = HelysegBll.GridColumns(),
                Helyseg_Reszletek     = HelysegBll.ReszletekColumns(),
                Irattipus_Grid        = IrattipusBll.GridColumns(),
                Irattipus_Reszletek   = IrattipusBll.ReszletekColumns(),
                Me_Grid               = MennyisegiegysegBll.GridColumns(),
                Me_Reszletek          = MennyisegiegysegBll.ReszletekColumns(),
                Penznem_Grid          = PenznemBll.GridColumns(),
                Penznem_Reszletek     = PenznemBll.ReszletekColumns(),
                Termekdij_Grid        = TermekdijBll.GridColumns(),
                Termekdij_Reszletek   = TermekdijBll.ReszletekColumns(),
                Tevekenyseg_Grid      = TevekenysegBll.GridColumns(),
                Tevekenyseg_Reszletek = TevekenysegBll.ReszletekColumns(),

                Cikk_Grid           = CikkBll.GridColumns(),
                BeszerzesKivet_Grid = CikkBll.BeszerzesKivetGridColumns(),
                Cikk_Reszletek      = CikkBll.ReszletekColumns(),
                Ugyfel_Grid         = UgyfelBll.GridColumns(),
                Ugyfel_Reszletek    = UgyfelBll.ReszletekColumns(),

                Projekt_Grid             = ProjektBll.GridColumns(),
                Projekt_Reszletek        = ProjektBll.ReszletekColumns(),
                Projektjegyzet_Grid      = ProjektJegyzetBll.GridColumns(),
                Projektjegyzet_Reszletek = ProjektJegyzetBll.ReszletekColumns(),
                Szamlazasirend_Grid      = SzamlazasiRendBll.GridColumns(),
                Szamlazasirend_Reszletek = SzamlazasiRendBll.ReszletekColumns(),

                Irat_Grid      = IratBll.GridColumns(),
                Irat_Reszletek = IratBll.ReszletekColumns(),

                Csoport_Grid      = CsoportBll.GridColumns(),
                Csoport_Reszletek = CsoportBll.ReszletekColumns(),

                Ajanlatkeres_Grid      = AjanlatkeresBll.GridColumns(),
                Ajanlatkeres_Reszletek = AjanlatkeresBll.ReszletekColumns(),

                Penztar_Grid           = PenztarBll.GridColumns(),
                Penztar_Reszletek      = PenztarBll.ReszletekColumns(),
                Penztartetel_Grid      = PenztarTetelBll.GridColumns(),
                Penztartetel_Reszletek = PenztarTetelBll.ReszletekColumns(),

                Kifizetes_Grid         = KifizetesBll.GridColumns(),
                Kifizetes_Reszletek    = KifizetesBll.ReszletekColumns(),
                Dokumentum_Grid        = DokumentumBll.GridColumns(),
                Dokumentum_Reszletek   = DokumentumBll.ReszletekColumns(),
                Volume_Grid            = VolumeBll.GridColumns(),
                Volume_Reszletek       = VolumeBll.ReszletekColumns(),
                Ugyfelterlog_Grid      = UgyfelterLogBll.GridColumns(),
                Ugyfelterlog_Reszletek = UgyfelterLogBll.ReszletekColumns(),
            };

            return(result);
        }
예제 #9
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());
        }