Exemplo n.º 1
0
        internal bool PredpisExport(int popl, string per, int ucetMes, int ucetRok, int idPredpisu)
        {
            try
            {
                P_NASTAVENI nast   = sesna.GetObjectByKey <P_NASTAVENI>("VAZBA_UCTO_TYP");
                bool        procDB = false;
                if (nast != null)
                {
                    procDB = (Convert.ToInt16(nast.HODNOTA) == 1);
                }

                if (!procDB)
                {
                    return(false);
                }

                DBValue dbv  = DBValue.Instance(sesna);
                string  user = dbv.DBUserName.ToUpper();

                P_POPL_USERS pUser = sesna.FindObject <P_POPL_USERS>(
                    CriteriaOperator.Parse("CompoundKey1.LOGIN = ? " +
                                           "and CompoundKey1.HODNOTA_NAZEV = ? " +
                                           "and CompoundKey1.SEKCE is null",
                                           dbv.DBUserName.ToUpper(), "Expfin_predp_ihned"));
                #region logovani
                if (pUser != null)
                {
                    Util.Util.WriteLog(string.Format("nastaveni pro export do ucta: LOGIN={0}, Expfin_predp_ihned={1}, " +
                                                     "popl={2}, per={3}, ucetMes={4}, ucetRok={5}, predpisID={6}",
                                                     dbv.DBUserName.ToUpper(), pUser.HODNOTA,
                                                     popl, per, ucetMes, ucetRok, idPredpisu));
                }
                else
                {
                    Util.Util.WriteLog(string.Format("nastaveni pro export do ucta: LOGIN={0}, nebylo dohledano", dbv.DBUserName.ToUpper()));
                }
                #endregion logovani

                if ((pUser != null) && (Convert.ToInt32(pUser.HODNOTA) > 0))
                {
                    DevExpress.Xpo.DB.SelectedData selData = sesna.ExecuteSproc("GEO_EXP_PRPL_OX",
                                                                                new OperandValue(popl),
                                                                                new OperandValue(per),
                                                                                new OperandValue(ucetMes),
                                                                                new OperandValue(ucetRok),
                                                                                new OperandValue(idPredpisu));
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception exc)
            {
                return(false);

                throw new Exception("Export předpisu do účetnictví neproběhl z důvodu chyby. \n\n" + exc.Message);
            }
        }
Exemplo n.º 2
0
        protected override void OnSaving()
        {
            base.OnSaving();

            if (this.Session.IsNewObject(this))
            {
                PRPL_OBDOBIMES = -1;
                PRPL_OBDOBIROK = -1;
                if (string.IsNullOrEmpty(PRPL_TISK))
                {
                    PRPL_TISK = "NE";
                }
                if (string.IsNullOrEmpty(PRPL_EXPORTOVANO))
                {
                    PRPL_EXPORTOVANO = "NE";
                }
                if (string.IsNullOrEmpty(PRPL_EXPFIN))
                {
                    PRPL_EXPFIN = "NE";
                }
                if (string.IsNullOrEmpty(PRPL_TYPSANKCE))
                {
                    PRPL_TYPSANKCE = "D";
                }
                if (string.IsNullOrEmpty(PRPL_PERNAS))
                {
                    PRPL_PERNAS = "D";
                }
                if (string.IsNullOrEmpty(PRPL_STAVSANKCE))
                {
                    PRPL_STAVSANKCE = " ";
                }

                if (string.IsNullOrEmpty(ENTRYLOGIN))
                {
                    DBValue dbv = DBValue.Instance(this.Session);
                    this.ENTRYDATE  = dbv.DBSysDateTime;
                    this.ENTRYLOGIN = dbv.DBUserName;
                }

                this.LOGIN      = this.ENTRYLOGIN;
                this.LASTUPDATE = this.ENTRYDATE;

                if (string.IsNullOrEmpty(PRPL_EXPSIPO))
                {
                    fPRPL_EXPSIPO = "NE";
                }
                if (string.IsNullOrEmpty(PRPL_VYMAHAT))
                {
                    PRPL_VYMAHAT = "N";
                }
                if (string.IsNullOrEmpty(PRPL_VYMAHANO))
                {
                    PRPL_VYMAHANO = "N";
                }
            }
        }
Exemplo n.º 3
0
        internal PravoNadPoplatkem(Session sesna)
        {
            DBValue dbv = DBValue.Instance(sesna);

            _user = dbv.DBUserName.ToUpper();
            prtab = new XPCollection <P_PRISTUP_TABLE>(
                sesna,
                CriteriaOperator.Parse("pk.PRTAB_LOGIN = ?", _user));
        }
Exemplo n.º 4
0
        internal DateTime GetDatumSplatnosti(DateTime vystaveno, C_EVPOPL evp, short porPer)
        {
            DateTime obdMez = vystaveno;

            int       pocDni = (int)evp.EVPOPL_POCDNU;
            C_PERIODA per    = null;
            DBValue   dbv    = null;

            switch (evp.EVPOPL_TERMPLAC.TERMPLAC_TERMPLAC)
            {
            case "Z":  //zaèátek období
            case "K":  //zacatek nebo konec období
                per = sesna.GetObjectByKey <C_PERIODA>(evp.CompoundKey1.EVPOPL_PER.PERIODA_NAZEV);
                C_KALENDAR.CompoundKey1Struct key = new C_KALENDAR.CompoundKey1Struct();
                key.KALENDAR_PERIODA.PERIODA_PERIODA = evp.CompoundKey1.EVPOPL_PER.PERIODA_NAZEV;
                key.KALENDAR_PORPER = porPer;
                obdMez = (sesna.GetObjectByKey <C_KALENDAR>(key)).KALENDAR_FROMDATE;
                break;

            case "P":                             //po vystavení poplatku
                dbv    = DBValue.Instance(sesna); //new DBValue(sesna);
                obdMez = dbv.DBSysDate;
                break;

            case "R":                             //zaèátek akt. roku
                dbv    = DBValue.Instance(sesna); //new DBValue(sesna);
                obdMez = new DateTime(dbv.DBSysDate.Year, 1, 1);
                break;

            case "E":                             //konec akt. roku
                dbv    = DBValue.Instance(sesna); //new DBValue(sesna);
                obdMez = new DateTime(dbv.DBSysDate.Year, 12, 31);
                break;
            }

            return(obdMez.AddDays(pocDni));
        }
        /// <summary>
        /// radky DPH, pripadne zaokrouhli a stanovi zaokrouleni
        /// napnlni vstupni List dopocitanymi hodnotami (kod sazby dane, dan, KC, zaokrouhleni, radek dorovanani na celkovou castku)
        /// </summary>

        internal void DPHZaokrouhli(List <DPHRozpis> dphRows, decimal poplatek, Session sesna, bool provestZaokrouhleni = true)
        {
            CriteriaOperator criteria;

            criteria = CriteriaOperator.Parse("NAZPOPL_POPLATEK = ?", poplatek);
            C_NAZPOPL cNazp = sesna.FindObject <C_NAZPOPL>(criteria);

            if (cNazp.NAZPOPL_DPH == 'N')
            {
                throw new Exception("Součástí poplatku není DPH");
            }

            decimal        suma        = 0;
            List <sazDane> sazbySoucty = new List <sazDane>();

            foreach (DPHRozpis item in dphRows)
            {
                var sd = new sazDane();
                sd.sazba = item.SAZBA;
                sd.KC    = item.ZAKLAD * (1 + (item.SAZBA ?? 0) / 100);

                int i = sazbySoucty.FindIndex(x => x.sazba == item.SAZBA); //i toto nalezne null hodnotu
                if (i == -1)
                {
                    sazbySoucty.Add(sd);
                }
                else
                {
                    sd.KC          = sazbySoucty[i].KC + (item.ZAKLAD * (1 + (item.SAZBA ?? 0) / 100));
                    sazbySoucty[i] = sd;
                }

                suma += item.ZAKLAD * (1 + (item.SAZBA ?? 0) / 100);
            }

            if (sazbySoucty.Count == 0)
            { //neexistuji radky dane
                return;
            }

            //nactu platne sazby dane
            DBValue dbv = DBValue.Instance(sesna); //new DBValue(sesna);
            XPCollection <P_DPH_SAZBA> dphSazby = new XPCollection <P_DPH_SAZBA>(
                sesna,
                CriteriaOperator.Parse("CompoundKey1.DPHS_OD <= ? and DPHS_DO > ?",
                                       dbv.DBSysDate, dbv.DBSysDate.AddDays(-1)));


            //naleznu nejvyssi castku a tim i zaokrouhlovanou sazbu
            //zaroven zkontroluji platnost sazby DPH
            sazDane dphRowMaxCastka;

            dphRowMaxCastka.sazba = null;
            dphRowMaxCastka.KC    = 0;

            foreach (sazDane item in sazbySoucty)
            {
                if (item.sazba == null)
                {
                    dphSazby.Filter = (CriteriaOperator.Parse("DPHS_SAZBA is null"));
                }
                else
                {
                    dphSazby.Filter = (CriteriaOperator.Parse("DPHS_SAZBA = ?", item.sazba));
                }

                if (dphSazby.Count == 0)
                {
                    throw new Exception(String.Format("sazba DPH \"{0}\" neni platná", item.sazba == null ? "bez daně" : item.sazba.ToString()));
                }
                if ((item.KC > dphRowMaxCastka.KC) && (item.sazba != 0) && (item.sazba.HasValue))
                {
                    dphRowMaxCastka = item;
                }
            }

            //doplnim kategorii sazby, dan a celkovou castku
            int presnostZaokr = 0;

            foreach (DPHRozpis item in dphRows)
            {
                item.DAN          = item.ZAKLAD * (item.SAZBA ?? 0) / 100;
                item.DAN          = Utils.Mathm.ZaokrouhliDouble(item.DAN, 2);
                item.KC           = item.ZAKLAD + item.DAN;
                item.ZAOKROUHLENI = 0;

                if (item.SAZBA == null)
                {
                    dphSazby.Filter = (CriteriaOperator.Parse("DPHS_SAZBA is null"));
                }
                else
                {
                    dphSazby.Filter = (CriteriaOperator.Parse("DPHS_SAZBA = ?", item.SAZBA));
                }

                item.KAT = dphSazby[0].CompoundKey1.DPHS_KAT;

                if (dphRowMaxCastka.sazba == dphSazby[0].DPHS_SAZBA)
                {
                    presnostZaokr = dphSazby[0].DPHS_ZAOKR;
                }
            }

            DPHRozpis zaokrRadek = dphRows.Find(x => x.SAZBA == dphRowMaxCastka.sazba);

            if (zaokrRadek == null)
            {//neexistuje radek s nenulovou sazbou DPH
                return;
            }

            //zda pocitat DPH ze zaokrouhleni
            P_NASTAVENI nast = sesna.GetObjectByKey <P_NASTAVENI>("DPH_ZEZAOKR");
            bool        DphZeza;

            if (nast != null)
            {
                DphZeza = nast.HODNOTA == "1";
            }
            else
            {
                DphZeza = true;
            }

            //zaokrouhledni DPH
            if (provestZaokrouhleni && (cNazp.NAZPOPL_DPHROUND == 'A'))
            {
                // sazDane zaokrSazDane = lsd.Find(x => x.sazba == zaokrRadek.SAZBA);
                decimal sazba = dphRowMaxCastka.sazba ?? 1;
                decimal koef  = sazba / 100m / (1 + (sazba / 100m)); //dle 235/2004 Sb. o DPH §37 odst 2.
                koef = Utils.Mathm.ZaokrouhliDouble(koef, 4);

                decimal dph   = zaokrRadek.DAN;
                decimal zaokr = Utils.Mathm.ZaokrouhliDouble(suma, 0) - suma;
                zaokr = Utils.Mathm.ZaokrouhliDouble(zaokr, 2);

                if (DphZeza)
                {
                    decimal dph_zaokr = zaokr * koef;                       //DPH ze zaokrouhleni
                    dph = Utils.Mathm.ZaokrouhliDouble(dph + dph_zaokr, 2); //upravene DPH o zaokrouhleni
                }

                zaokrRadek.DAN          = dph;
                zaokrRadek.ZAOKROUHLENI = zaokr;
            }
        }
Exemplo n.º 6
0
        protected override void OnSaving()
        {
            bool inserted = ((ADR_ID == 0) || (ADR_ID == null));

            base.OnSaving();

            DBValue dbv = DBValue.Instance(this.Session);

            LOGIN      = dbv.DBUserName;
            LASTUPDATE = dbv.DBSysDateTime;

            if (inserted)
            {
                DBUtil dbu = new DBUtil(this.Session);
                ADR_ID = dbu.LIZNI_SEQ("P_SEQ_ADR_ID");

                if (this.ADR_ICO_OPROS == null)
                {
                    ADR_ICO_OPROS = "-1";
                }
                ADR_OPROS_ROZH = Convert.ToChar("N");
                ADR_ADRPOPL    = -1m; //neodsouhlasena adresa
                if (ADR_PLATCEDPH == null)
                {
                    ADR_PLATCEDPH = "N";
                }

                if ((string.IsNullOrEmpty(ADR_NAZEV1)) && (!string.IsNullOrEmpty(ADR_JMENO) ||
                                                           !string.IsNullOrEmpty(ADR_PRIJMENI)))
                {
                    ADR_NAZEV1 = (ADR_PRIJMENI + ' ' + ADR_JMENO).Trim();
                }

                if (!string.IsNullOrEmpty(ADR_NAZEV1) && !string.IsNullOrEmpty(ADR_TITUL_PRED))
                {
                    ADR_NAZEV1 = ADR_TITUL_PRED + " " + ADR_NAZEV1;
                }
                if (!string.IsNullOrEmpty(ADR_NAZEV1) && !string.IsNullOrEmpty(ADR_TITUL_ZA))
                {
                    ADR_NAZEV1 += ", " + ADR_TITUL_ZA;
                }


                if (string.IsNullOrWhiteSpace(ADR_ICO))
                {
                    ADR_ICO = null;                                      //0.8
                }
                if ((ADR_ICO != null) && ADR_ICO.Contains('#'))
                {
                    throw new Exception("nepovolený tvar IČ/RČ");
                }

                //0.8
                if (ADR_ICO == null)
                {
                    ADR_ICO = "#" + ADR_ID.ToString();
                }
                if (ADR_TYP == null)
                {
                    throw new Exception("TYP osoby musí být vyplněn");
                }
                if (ADR_NAZEV1 == null)
                {
                    throw new Exception("NAZEV osoby musí být vyplněn");
                }
                if (((ADR_TYP == "F") || (ADR_TYP == "C")) && (ADR_DATNAR == null))
                {
                    throw new Exception("datum narození osoby musí být vyplněn");
                }
                if (((ADR_ICZUJ_NAZEV == null) && (ADR_ZAHR == 0)) ||
                    ((ADR_ZAHR_ULICE_A_CISLO == null) && (ADR_ZAHR == 1)))
                {
                    throw new Exception("název ulice musí být vyplněn");
                }
                if ((ADR_PLATCEDPH != "N") && (ADR_PLATCEDPH != "A"))
                {
                    throw new Exception("chybná hodnota plátce DPH (povolená hodnota-[A/N])");
                }
            }
        }
        protected override void OnSaving()
        {
            base.OnSaving();

            if (fIsModified)
            {
            }

            if (CompoundKey1.RGP_POPLATEK == 0)
            {
                throw new Exception("poplatek musí být vyplněn");
            }
            if (CompoundKey1.RGP_PER == null)
            {
                throw new Exception("perioda musí být vyplněna");
            }
            if (CompoundKey1.RGP_ICO == null)
            {
                throw new Exception("IČ/RČ musí být vyplněno");
            }
            if (this.CompoundKey1.RGP_DOPLKOD == null)
            {
                CompoundKey1.RGP_DOPLKOD = " ";
            }
            if (RGP_PLATBA == null)
            {
                RGP_PLATBA = " ";
            }
            if (RGP_ZADANO == null)
            {
                RGP_ZADANO = "R";
            }
            if (RGP_VRATKA == null)
            {
                RGP_VRATKA = "ANO";
            }
            RGP_SAZBA = null;

            DBUtil dbu = new DBUtil(this.Session);

            #region vypocet splatky// 0.10 zjistuji pouze pocet splatek

            short   pocSplatek = 0; short periodicita = 0;
            decimal kcSplatka = 0, poslSplatka = 0;
            dbu.GetRgpSplatky(RGP_KCROK, CompoundKey1.RGP_PER, ref kcSplatka, ref poslSplatka, ref pocSplatek, ref periodicita);
            #endregion vypocet splatky

            DBValue dbv = DBValue.Instance(this.Session);
            if ((RGP_FROMDATE == null) || (RGP_FROMDATE == DateTime.MinValue))
            {
                RGP_FROMDATE = dbv.DBSysDate;
            }
            RGP_FROMDATE = RGP_FROMDATE.Date;
            if ((RGP_TODATE != null) && (RGP_FROMDATE != DateTime.MinValue))
            {
                RGP_TODATE = ((DateTime)RGP_TODATE).Date;
            }

            if (pocSplatek == 365)
            {
                RGP_TODATE = RGP_FROMDATE;
            }

            #region data z EVPOPL, NAZPOPL
            string  expfin      = string.Empty;
            string  typsankce   = string.Empty;
            string  pernas      = string.Empty;
            string  vystup      = string.Empty;
            decimal procsankce  = 0;
            decimal pevnacastka = 0;
            decimal nasobek     = 0;
            int     porvs       = 0;

            dbu.GetEvpoplData(CompoundKey1.RGP_POPLATEK, CompoundKey1.RGP_PER,
                              ref expfin, ref procsankce, ref typsankce,
                              ref pevnacastka, ref nasobek, ref pernas,
                              ref vystup, ref porvs);
            if (expfin == string.Empty)
            {
                throw new Exception("nelze určit export do financí - neexistující perioda pro poplatek");
            }
            if (string.IsNullOrEmpty(RGP_EXPUCTO))
            {
                RGP_EXPUCTO = expfin;
            }
            RGP_PROCSANKCE  = procsankce;
            RGP_TYPSANKCE   = typsankce;
            RGP_PEVNACASTKA = pevnacastka;
            RGP_NASOBEK     = nasobek;
            RGP_PERNAS      = pernas;
            RGP_VYSTUP      = vystup;
            if (RGP_PORVS == 0)
            {
                RGP_PORVS = porvs + 1;
            }
            #endregion data z EVPOPL, NAZPOPL

            this.LASTUPDATE = dbv.DBSysDateTime;
            this.LOGIN      = dbv.DBUserName;
        }