/*======================================================================*/ private void ValidateInputParam(int EXT_APP_KOD, int PREDPIS_ID, ref P_PRPL prpl) { if (EXT_APP_KOD == null) { throw new Exception("kód externí aplikace není zadán"); } P_EXTAPP EA = sesna.GetObjectByKey <P_EXTAPP>(EXT_APP_KOD); if (EA == null) { throw new Exception("chybný kód externí aplikace"); } if (PREDPIS_ID == 0) { throw new Exception("údaj PREDPIS_ID není zadán"); } prpl = sesna.FindObject <P_PRPL>(CriteriaOperator.Parse("PRPL_ID = ?", PREDPIS_ID)); if (prpl == null) { this.Resp.status = Status.NOTEXISTS; this.Resp.result = Result.ERROR; { throw new Exception("neexistující předpis"); } } //zda je pristup na poplatek KONTROLA_POPLATKU kp = new KONTROLA_POPLATKU(sesna, EXT_APP_KOD); if (!kp.EAexist()) { throw new Exception("chybný kód externí aplikace"); } if (!kp.existPravoNadPoplatkem(prpl.CompoundKey.PRPL_POPLATEK)) { throw new Exception("k pohledávce neexistuje oprávnění"); } #region kontrola prava nad poplatkem PravoNadPoplatkem pnp = null; try { pnp = new PravoNadPoplatkem(sesna); } catch (Exception) { throw new Exception("kontrola přístup. práv uživatele nad daty Příjmové agendy skončila chybou"); } //pro predpisy je povoleno vkladani if (!pnp.PravoExist((int)prpl.CompoundKey.PRPL_POPLATEK, PravoNadPoplatkem.PrtabTable.PRPL, PravoNadPoplatkem.SQLPerm.INSERT)) { throw new Exception("PoplWS - nedostatečná oprávnění pro vkládání předpisů."); } #endregion kontrola prava nad poplatkem }
public PESPLEMENA_RESP DejPsiSeznamPlemen(Session sesna, int EXT_APP_KOD) { PESPLEMENA_RESP Resp = new PESPLEMENA_RESP(); sesna.DropIdentityMap(); try { if (EXT_APP_KOD == null) { throw new Exception("kód externí aplikace není zadán"); } P_EXTAPP EA = sesna.GetObjectByKey <P_EXTAPP>(EXT_APP_KOD); if (EA == null) { throw new Exception("chybný kód externí aplikace"); } int popl = Convert.ToInt16(sesna.ExecuteScalar(string.Format("SELECT KONF_POPLATEK FROM PES_KONFIG"))); KONTROLA_POPLATKU kp = new KONTROLA_POPLATKU(sesna, EXT_APP_KOD); if (!kp.EAexist()) { throw new Exception("chybný kód externí aplikace"); } if (!kp.existPravoNadPoplatkem(popl)) { throw new Exception("Ext. aplikace nemá oprávnění k typu pohledávky."); } XPCollection <C_PES_PLEMENO> plemena = new XPCollection <C_PES_PLEMENO>(sesna, CriteriaOperator.Parse("1 = 1"), new SortProperty("C_PES_PLEMENO_NAZEV", SortingDirection.Ascending)); if (plemena != null) { Resp.PLEMENA = new List <PLEMENO>(); } foreach (C_PES_PLEMENO item in plemena) { PLEMENO pl = new PLEMENO(); pl.KOD = item.C_PES_PLEMENO_KOD; pl.NAZEV = item.C_PES_PLEMENO_NAZEV; Resp.PLEMENA.Add(pl); } Resp.result = Result.OK; Resp.status = Status.EXISTS; return(Resp); } catch (Exception exc) { Resp.result = Result.ERROR; if (exc.InnerException == null) { Resp.ERRORMESS = exc.Message; } else { Resp.ERRORMESS = exc.InnerException.Message; } /* * throw new Exception(String.Format("chyba \n {0}", exc.InnerException.Message)); */ return(Resp); } }
public DEJPSY_RESP DejPsiSeznam(Session sesna, int EXT_APP_KOD, GET_PES_PARAMS inParams) { DEJPSY_RESP Resp = new DEJPSY_RESP(); sesna.DropIdentityMap(); try { #region kontrola vyberovych parametru if (((inParams.PES_ZNAMKA == null) && string.IsNullOrWhiteSpace(inParams.PES_JMENO) && (inParams.PES_PLEMENO_KOD == null) && string.IsNullOrWhiteSpace(inParams.POPLATNIK_PRIJMENI) && string.IsNullOrWhiteSpace(inParams.POPLATNIK_FIRMA) && string.IsNullOrWhiteSpace(inParams.POPLATNIK_ULICE) && (inParams.POPLATNIK_CP == null) && string.IsNullOrWhiteSpace(inParams.PES_TETOVANI) && string.IsNullOrWhiteSpace(inParams.PES_CIP) && string.IsNullOrWhiteSpace(inParams.PES_ZNAMKA_CIP) ) ) { { throw new Exception("výběrová podmínka není zadána"); } } #endregion kontrola vyberovych parametru #region kontrola prava na poplatek if (EXT_APP_KOD == null) { throw new Exception("kód externí aplikace není zadán"); } P_EXTAPP EA = sesna.GetObjectByKey <P_EXTAPP>(EXT_APP_KOD); if (EA == null) { throw new Exception("chybný kód externí aplikace"); } int popl = Convert.ToInt16(sesna.ExecuteScalar(string.Format("SELECT KONF_POPLATEK FROM PES_KONFIG"))); KONTROLA_POPLATKU kp = new KONTROLA_POPLATKU(sesna, EXT_APP_KOD); if (!kp.EAexist()) { throw new Exception("chybný kód externí aplikace"); } if (!kp.existPravoNadPoplatkem(popl)) { throw new Exception("Ext. aplikace nemá oprávnění k typu pohledávky."); } #endregion kontrola prava na poplatek #region kontrola prava nad predpisy, platce, PravoNadPoplatkem pnp = null; try { pnp = new PravoNadPoplatkem(sesna); } catch (Exception) { throw new Exception("kontrola přístp. práv uživatele nad daty Příjmové agendy skončila chybou"); } if (!pnp.PravoExist(popl, PravoNadPoplatkem.PrtabTable.PRPL, PravoNadPoplatkem.SQLPerm.SELECT)) { throw new Exception("PoplWS - nedostatečná oprávnění pro čtení předpisů."); } if (!pnp.PravoExist(popl, PravoNadPoplatkem.PrtabTable.RGP, PravoNadPoplatkem.SQLPerm.SELECT)) { throw new Exception("PoplWS - nedostatečná oprávnění pro čtení plátců."); } #endregion kontrola prava nad predpisy #region SQL select DBVal dbv = new DBVal(sesna); IDBValFactory idbv = dbv.CreateDBV(); DateTime rDate = DateTime.Now; StringBuilder cmd = new StringBuilder(); cmd.Append("select "); cmd.Append(" (select sum(PRPL_PREDPIS + PRPL_SANKCE - PRPL_SPAROVANO) from P_PRPL b "); cmd.Append(" where b.PRPL_ICO = a.RGP_ICO "); cmd.Append(" and b.PRPL_POPLATEK = a.RGP_POPLATEK "); cmd.Append(" and b.PRPL_PREDPIS + b.PRPL_SANKCE > 0 "); cmd.Append(" and b.PRPL_SPLATNO < " + idbv.getParamText("DNESEK")); cmd.Append(" and b.PRPL_RECORD in (' ','P')) DLUH, "); cmd.Append(" PES_MAJITEL_ICO, PES_ID, PES_CIS_PRIZNANI, PES_JMENO, PES_POPIS,"); cmd.Append(" PES_ZNAMKA, PES_CIP, PES_NAROZEN, PES_DRZEN_OD, PES_POPL_OD, PES_POPL_DO,"); cmd.Append(" PES_SLEVA_OD, PES_SLEVA_DO, PES_ZMENA_OD, PES_OCKOVAN, PES_UCEL, PES_SAZPOPL_SAZBA,"); cmd.Append(" PES_POHLAVI, PES_OSVOBOZEN, PES_DRZEN_DO, PES_MAJITEL_PERIODA, PES_POZNAMKA, PES_TET,"); cmd.Append(" PES_CIP2, PES_ZNAMKA_VYD, PES_BARVA, PES_SLEVAC_OD, PES_SLEVAC_DO, PES_SLEVAC_KC,"); cmd.Append(" PES_UQ_ID,"); cmd.Append(" C_PES_PLEMENO_NAZEV, C_PES_BARVA_NAZEV, "); cmd.Append(" ADR_ICO, ADR_TYP, ADR_NAZEV1, ADR_NAZEV2, ADR_ICZUJ, ADR_ICZUJ_NAZEV,"); cmd.Append(" ADR_KODCOB, ADR_KODCOB_NAZEV, ADR_KODUL, ADR_KODUL_NAZEV, ADR_CIS_DOMU, ADR_CIS_OR,"); cmd.Append(" ADR_ZNAK_CO, ADR_PSC, ADR_KNAZEV1, ADR_KNAZEV2, ADR_KICZUJ, ADR_KICZUJ_NAZEV,"); cmd.Append(" ADR_KKODCOB, ADR_KKODCOB_NAZEV, ADR_KKODUL, ADR_KKODUL_NAZEV, ADR_KCIS_DOMU, ADR_KCIS_OR,"); cmd.Append(" ADR_KZNAK_CO, ADR_KPSC, ADR_SIPO, ADR_ZMENAROB,"); cmd.Append(" ADR_JMENO, ADR_KJMENO, ADR_PRIJMENI, ADR_KPRIJMENI, ADR_TITUL_PRED, ADR_KTITUL_PRED,"); cmd.Append(" ADR_TITUL_ZA, ADR_KTITUL_ZA, ADR_ADRPOPL, ADR_ICO_OPROS, ADR_OPROS_ROZH, ADR_DATNAR,"); cmd.Append(" ADR_ZMENAROB_ZPRAC, ADR_POSTA, ADR_kPOSTA, ADR_TELEFON, ADR_EMAIL, ADR_PLATCEDPH,"); cmd.Append(" ADR_DIC, ADR_ISIR, ADR_IDDS, ADR_PAS, ADR_STAT, ADR_ID,"); cmd.Append(" ADR_DADRESA, ADR_EA"); cmd.Append(" from P_RGP a, P_ADRESA_ROBRHS, PES_MAJITEL, PES_PES "); cmd.Append(" LEFT OUTER JOIN C_PES_PLEMENO on (PES_PLEMENO = C_PES_PLEMENO_KOD) "); cmd.Append(" LEFT OUTER JOIN C_PES_BARVA on (PES_BARVA = C_PES_BARVA_KOD) "); cmd.Append(" where RGP_ICO = PES_MAJITEL_ICO "); cmd.Append(" and PES_MAJITEL_ICO = ADR_ICO "); cmd.Append(" and MAJITEL_AKTIVNI = 'A' "); cmd.Append(" and PES_MAJITEL_ICO = MAJITEL_ICO "); cmd.Append(" and PES_MAJITEL_PERIODA = MAJITEL_PERIODA "); cmd.Append(" and PES_POPL_OD <= " + idbv.getParamText("DNESEK")); cmd.Append(" and (PES_POPL_DO is null or PES_POPL_DO >= " + idbv.getParamText("DNESEK") + ")"); cmd.Append(" and RGP_POPLATEK = " + idbv.getParamText("POPL")); #endregion SQL select List <string> pNames = new List <string>(); pNames.Add("DNESEK"); pNames.Add("POPL"); List <object> pValues = new List <object>(); pValues.Add(rDate.Date); //DNESEK pValues.Add(popl); //POPL #region odstraneni wildcarts [%, _] if (!string.IsNullOrWhiteSpace(inParams.PES_JMENO)) { inParams.PES_JMENO = inParams.PES_JMENO.Replace("%", string.Empty); inParams.PES_JMENO = inParams.PES_JMENO.Replace("_", string.Empty); } if (!string.IsNullOrWhiteSpace(inParams.POPLATNIK_PRIJMENI)) { inParams.POPLATNIK_PRIJMENI = inParams.POPLATNIK_PRIJMENI.Replace("%", string.Empty); inParams.POPLATNIK_PRIJMENI = inParams.POPLATNIK_PRIJMENI.Replace("_", string.Empty); } if (!string.IsNullOrWhiteSpace(inParams.POPLATNIK_FIRMA)) { inParams.POPLATNIK_FIRMA = inParams.POPLATNIK_FIRMA.Replace("%", string.Empty); inParams.POPLATNIK_FIRMA = inParams.POPLATNIK_FIRMA.Replace("_", string.Empty); } if (!string.IsNullOrWhiteSpace(inParams.POPLATNIK_ULICE)) { inParams.POPLATNIK_ULICE = inParams.POPLATNIK_ULICE.Replace("%", string.Empty); inParams.POPLATNIK_ULICE = inParams.POPLATNIK_ULICE.Replace("_", string.Empty); } #endregion odstraneni wildcarts #region where podminky if (inParams.PES_ZNAMKA != null) { cmd.Append(" and PES_ZNAMKA = " + inParams.PES_ZNAMKA.ToString()); } if (!string.IsNullOrWhiteSpace(inParams.PES_JMENO)) { if (inParams.PES_JMENO.Any(c => char.IsLower(c))) { if (inParams.PES_JMENO.Length >= 5) { cmd.Append(" and PES_JMENO like '" + inParams.PES_JMENO + "%'"); } else { cmd.Append(" and PES_JMENO = '" + inParams.PES_JMENO + "'"); } } else { if (inParams.PES_JMENO.Length >= 5) { cmd.Append(" and UPPER(PES_JMENO) like '" + inParams.PES_JMENO + "%'"); } else { cmd.Append(" and UPPER(PES_JMENO) = '" + inParams.PES_JMENO + "'"); } } } if (inParams.PES_PLEMENO_KOD != null) { cmd.Append(" and PES_PLEMENO = " + inParams.PES_PLEMENO_KOD.ToString()); } if (!string.IsNullOrWhiteSpace(inParams.POPLATNIK_PRIJMENI)) { if (inParams.POPLATNIK_PRIJMENI.Any(c => char.IsLower(c))) { if (inParams.POPLATNIK_PRIJMENI.Length >= 5) { cmd.Append(" and ADR_PRIJMENI like '" + inParams.POPLATNIK_PRIJMENI + "%'"); } else { cmd.Append(" and ADR_PRIJMENI = '" + inParams.POPLATNIK_PRIJMENI + "'"); } } else { if (inParams.POPLATNIK_PRIJMENI.Length >= 5) { cmd.Append(" and UPPER(ADR_PRIJMENI) like '" + inParams.POPLATNIK_PRIJMENI + "%'"); } else { cmd.Append(" and UPPER(ADR_PRIJMENI) = '" + inParams.POPLATNIK_PRIJMENI + "'"); } } } if (!string.IsNullOrWhiteSpace(inParams.POPLATNIK_FIRMA)) { if (inParams.POPLATNIK_FIRMA.Any(c => char.IsLower(c))) { if (inParams.POPLATNIK_FIRMA.Length >= 5) { cmd.Append(" and ADR_NAZEV1 like '" + inParams.POPLATNIK_FIRMA + "%'"); } else { cmd.Append(" and ADR_NAZEV1 = '" + inParams.POPLATNIK_FIRMA + "'"); } } else { if (inParams.POPLATNIK_FIRMA.Length >= 5) { cmd.Append(" and UPPER(ADR_NAZEV1) like '" + inParams.POPLATNIK_FIRMA + "%'"); } else { cmd.Append(" and UPPER(ADR_NAZEV1) = '" + inParams.POPLATNIK_FIRMA + "'"); } } } if (!string.IsNullOrWhiteSpace(inParams.POPLATNIK_ULICE)) { if (inParams.POPLATNIK_ULICE.Any(c => char.IsLower(c))) { if (inParams.POPLATNIK_ULICE.Length >= 5) { cmd.Append(" and ADR_KODUL_NAZEV like '" + inParams.POPLATNIK_ULICE + "%'"); } else { cmd.Append(" and ADR_KODUL_NAZEV = '" + inParams.POPLATNIK_ULICE + "'"); } } else { if (inParams.POPLATNIK_ULICE.Length >= 5) { cmd.Append(" and UPPER(ADR_KODUL_NAZEV) like '" + inParams.POPLATNIK_ULICE + "%'"); } else { cmd.Append(" and UPPER(ADR_KODUL_NAZEV) = '" + inParams.POPLATNIK_ULICE + "'"); } } } if (inParams.POPLATNIK_CP != null) { cmd.Append(" and ADR_CIS_DOMU = " + inParams.POPLATNIK_CP.ToString()); } if (!string.IsNullOrWhiteSpace(inParams.PES_ZNAMKA_CIP)) { cmd.Append(" and PES_CIP = '" + inParams.PES_ZNAMKA_CIP + "'"); } if (!string.IsNullOrWhiteSpace(inParams.PES_TETOVANI)) { cmd.Append(" and PES_TET = '" + inParams.PES_TETOVANI + "'"); } if (!string.IsNullOrWhiteSpace(inParams.PES_CIP)) { cmd.Append(" and PES_CIP2 = '" + inParams.PES_CIP + "'"); } #endregion SQL podminky SelectedData resultSet = sesna.ExecuteQueryWithMetadata(cmd.ToString(), pNames.ToArray(), pValues.ToArray()); string ico = string.Empty; PES pes; PLATCE_PSA psiPlatce = null; if (resultSet.ResultSet[1].Rows.Count() > 0) { Resp.PLATCI = new List <PLATCE_PSA>(); } foreach (var row in resultSet.ResultSet[1].Rows) { if (ico != row.ValByName(resultSet, "ADR_ICO").ToString()) { psiPlatce = new PLATCE_PSA(); psiPlatce.OSOBA = new OSOBA(); row.copyToObject <OSOBA>(resultSet, psiPlatce.OSOBA); row.copyToObject <KONTAKTNI_ADRESA>(resultSet, psiPlatce.OSOBA.KONTAKTNI_ADRESA); object dluh = row.ValByName(resultSet, "DLUH") ?? (object)0; psiPlatce.DLUH = Convert.ToDecimal(dluh) != 0; Resp.PLATCI.Add(psiPlatce); ico = row.ValByName(resultSet, "ADR_ICO").ToString(); psiPlatce.PSI = new List <PES>(); } pes = new PES(); row.copyToObject <PES>(resultSet, pes); pes.PLEMENO = (string)row.ValByName(resultSet, "C_PES_PLEMENO_NAZEV"); pes.BARVA = (string)row.ValByName(resultSet, "C_PES_BARVA_NAZEV"); psiPlatce.PSI.Add(pes); } Resp.result = Result.OK; if ((psiPlatce != null) && (psiPlatce.PSI.Count() > 0)) { Resp.status = Status.EXISTS; } else { Resp.status = Status.NOTEXISTS; } return(Resp); } catch (Exception exc) { Resp.result = Result.ERROR; Resp.status = Status.ERROR; //0.27 if (exc.InnerException == null) { Resp.ERRORMESS = exc.Message; } else { Resp.ERRORMESS = exc.InnerException.Message; } /* * throw new Exception(String.Format("chyba \n {0}", exc.InnerException.Message)); */ return(Resp); } }
public PREDPIS_RESP InsertPredpis(Session session, int EXT_APP_KOD, PREDPIS predpis, bool nastavitKCdleDPH) { Session sesna = session; PREDPIS_RESP Resp = new PREDPIS_RESP(); CriteriaOperator criteria; //Session sesna = predpis.sesna; sesna.DropIdentityMap(); predpis.PRPL_ID = 0; predpis.PRPL_EXTVS = null; predpis.PRPL_EA = EXT_APP_KOD; try { #region test vyplneni vstupnich hodnot if (EXT_APP_KOD == null) { throw new Exception("kód externí aplikace není zadán"); } P_EXTAPP EA = sesna.GetObjectByKey <P_EXTAPP>(EXT_APP_KOD); if (EA == null) { throw new Exception("chybný kód externí aplikace"); } if (predpis.PLATCE_ID == 0) { throw new Exception("údaj PLATCE_ID není zadán"); } if (predpis.PRPL_PREDPIS == 0) { throw new Exception("údaj KC není zadán"); } if (predpis.PRPL_VYSTAVENO == DateTime.MinValue) { throw new Exception("údaj VYSTAVENO_DNE není zadán"); } if ((predpis.RADKY_DPH.Count > 0) && (predpis.PRPL_UZP == null)) { throw new Exception("údaj DATUM_UZP není zadán"); } if (predpis.RADKY_DPH.Count > 0) { P_NASTAVENI nast = sesna.GetObjectByKey <P_NASTAVENI>("OTEVR_UZP"); string s = nast.HODNOTA.Substring(1, nast.HODNOTA.IndexOf('|') - 1); DateTime otevrUZP = DateTime.ParseExact(s, "d.M.yyyy", null); otevrUZP = new DateTime(otevrUZP.Year, otevrUZP.Month, 1); if (predpis.PRPL_UZP < otevrUZP) { throw new Exception("DATUM_UZP není v otevřeném období UZP"); } } //otevrene obdobi { P_NASTAVENI nast = sesna.GetObjectByKey <P_NASTAVENI>("OTEVR_OBDOBI"); string obd = "01." + nast.HODNOTA; DateTime otevrObd = DateTime.ParseExact(obd, "d.M.yyyy", null); if (predpis.PRPL_VYSTAVENO < otevrObd) { throw new Exception("datum vystavení není v otevřeném období"); } } //v minulosti { DBValue dbv = DBValue.Instance(sesna); if (predpis.PRPL_VYSTAVENO < dbv.DBSysDate) { throw new Exception("datum vystavení nemůže být v minulosti"); } } #endregion test vyplneni vstupnich hodnot #region test, zda existuje v P_RGP, dohledani zbytku klice XPQuery <P_RGP> Qplce = sesna.Query <P_RGP>(); XPCollection <P_RGP> plces = new XPCollection <P_RGP>(sesna, false); //loadingEnabled = false; P_RGP[] rgps = Qplce.Where(a => a.RGP_ID == predpis.PLATCE_ID).ToArray <P_RGP>(); plces.AddRange(rgps); if (plces.Count == 0) { throw new Exception(String.Format(@"poplatník s ID {0} neexistuje", predpis.PLATCE_ID)); } #endregion test, zda existuje v P_RGP, dohledani zbytku klice KONTROLA_POPLATKU kp = new KONTROLA_POPLATKU(sesna, EXT_APP_KOD); if (!kp.EAexist()) { throw new Exception("chybný kód externí aplikace"); } if (!kp.existPravoNadPoplatkem(plces[0].CompoundKey1.RGP_POPLATEK)) { throw new Exception("k pohledávce neexistuje oprávnění"); } #region kontrola prava nad poplatkem PravoNadPoplatkem pnp = null; try { pnp = new PravoNadPoplatkem(sesna); } catch (Exception) { throw new Exception("kontrola přístp. práv uživatele nad daty Příjmové agendy skončila chybou"); } //pro predpisy je povoleno vkladani if (!pnp.PravoExist((int)plces[0].CompoundKey1.RGP_POPLATEK, PravoNadPoplatkem.PrtabTable.PRPL, PravoNadPoplatkem.SQLPerm.INSERT)) { throw new Exception("PoplWS - nedostatečná oprávnění"); } #endregion kontrola prava nad poplatkem P_RGP plce = plces[0]; predpis.PRPL_PORPER = predpis.PRPL_PORPER == 0 ? 1 : predpis.PRPL_PORPER; DBUtil dbu = new DBUtil(sesna); C_EVPOPL evp = dbu.GetEvpopl(plce.CompoundKey1.RGP_POPLATEK, plce.CompoundKey1.RGP_PER); if (evp == null) { throw new Exception("nepovolená kombinace poplatek / perioda"); } //datum splatnosti if (predpis.PRPL_SPLATNO == DateTime.MinValue) { predpis.PRPL_SPLATNO = dbu.GetDatumSplatnosti(predpis.PRPL_VYSTAVENO, evp, (short)predpis.PRPL_PORPER); } if ((predpis.PRPL_VYSTAVENO > predpis.PRPL_SPLATNO) && (evp.EVPOPL_SPLT_VYST != "A")) { throw new Exception("datum splatnosti nemůže být starší než datum vystavení"); } //pocet period if (evp.CompoundKey1.EVPOPL_PER.PERIODA_POC < predpis.PRPL_PORPER) { throw new Exception(String.Format("nepovolené pořadí periody \"{0}\", max. pořadí pro periodu \"{1}\" = {2}", predpis.PRPL_PORPER, plce.CompoundKey1.RGP_PER, evp.CompoundKey1.EVPOPL_PER.PERIODA_POC)); } using (MyUnitOfWork uow = new MyUnitOfWork(sesna.DataLayer)) { P_PRPL prIns = new P_PRPL(uow); Utils.copy.CopyDlePersistentAttr <P_PRPL>(predpis, prIns); prIns.PRPL_ID = dbu.LIZNI_SEQ("PRPL_ID"); prIns.CompoundKey.PRPL_POPLATEK = plce.CompoundKey1.RGP_POPLATEK; prIns.CompoundKey.PRPL_PER = plce.CompoundKey1.RGP_PER; prIns.CompoundKey.PRPL_ICO = plce.CompoundKey1.RGP_ICO; prIns.CompoundKey.PRPL_DOPLKOD = plce.CompoundKey1.RGP_DOPLKOD; prIns.PRPL_ROK = predpis.PRPL_ROK == 0 ? predpis.PRPL_VYSTAVENO.Year : predpis.PRPL_ROK; prIns.PRPL_PORPER = predpis.PRPL_PORPER == 0 ? 1 : predpis.PRPL_PORPER; prIns.PRPL_SS = predpis.PRPL_SS ?? evp.EVPOPL_SS; if (predpis.EXPORTOVAT_DO_FINANCI == null) { prIns.PRPL_EXPFIN = plce.RGP_EXPUCTO; } else { prIns.PRPL_EXPFIN = predpis.EXPORTOVAT_DO_FINANCI.ToString(); } P_C_TYPDANE typdane = uow.GetObjectByKey <P_C_TYPDANE>(predpis.PRPL_TYPDANE); if (typdane != null) { prIns.PRPL_TYPDANE = typdane; } else { typdane = uow.GetObjectByKey <P_C_TYPDANE>((short)5); prIns.PRPL_TYPDANE = typdane; } prIns.PRPL_RECORD = dbu.GetRecordFromTypDane(prIns.PRPL_TYPDANE.TYPDANE_KOD); if (prIns.PRPL_RECORD == "-1") { throw new Exception(String.Format(@"chybný typ daně {0}", prIns.PRPL_TYPDANE)); } if (prIns.PRPL_RECORD == "P") { prIns.PRPL_SANKCE = prIns.PRPL_PREDPIS; prIns.PRPL_PREDPIS = 0; } ; prIns.PRPL_VS = plce.VS; prIns.PRPL_PORSANKCE = 0m; prIns.PRPL_PROCSANKCE = plce.RGP_PROCSANKCE; prIns.PRPL_VYSTUP = plce.RGP_VYSTUP; prIns.PRPL_TISK = "NE"; prIns.PRPL_EXPORTOVANO = "NE"; prIns.PRPL_UCETMESIC = predpis.PRPL_VYSTAVENO.Month; prIns.PRPL_UCETROK = predpis.PRPL_VYSTAVENO.Year; prIns.PRPL_OBDOBIMES = -1; prIns.PRPL_OBDOBIROK = -1; prIns.PRPL_TYPSANKCE = plce.RGP_TYPSANKCE; prIns.PRPL_PEVNACASTKA = plce.RGP_PEVNACASTKA; prIns.PRPL_NASOBEK = plce.RGP_NASOBEK; prIns.PRPL_PERNAS = plce.RGP_PERNAS; prIns.PRPL_STAVSANKCE = " "; prIns.PRPL_SPAROVANO = 0m; prIns.PRPL_EXPSIPO = "NE"; prIns.PRPL_VYMAHAT = predpis.PRPL_VYMAHAT == null ? "N" : predpis.PRPL_VYMAHAT; prIns.PRPL_VYMAHANO = "N"; prIns.PRPL_PR = 0; DBValue dbv = DBValue.Instance(sesna); prIns.LOGIN = dbv.DBUserName; prIns.LASTUPDATE = dbv.DBSysDateTime; prIns.ENTRYLOGIN = prIns.ENTRYLOGIN; prIns.ENTRYDATE = prIns.LASTUPDATE; if (!prIns.PRPL_OLDVS.HasValue) { prIns.PRPL_OLDVS = plce.RGP_OLDVS; } #region DPH - zkontrolovani celkove castky, zaokrouhleni decimal SumaRadkuDPH = predpis.PRPL_PREDPIS; List <DPHRozpis> radkyDph = new List <DPHRozpis>(); if (predpis.RADKY_DPH.Count > 0) { DPHRozpis dpr; foreach (RADEK_DPH item in predpis.RADKY_DPH) { if (item.ZAKLAD == 0) { continue; } dpr = new DPHRozpis(); Utils.copy.CopyDlePersistentAttr(item, dpr); dpr.DAN = item.ZAKLAD * ((item.SAZBA ?? 0) / 100); dpr.KC = dpr.ZAKLAD + dpr.DAN; radkyDph.Add(dpr); } DPHZaokrouhleni dphZaokr = new DPHZaokrouhleni(); dphZaokr.DPHZaokrouhli(radkyDph, prIns.CompoundKey.PRPL_POPLATEK, sesna); SumaRadkuDPH = 0; foreach (var item in radkyDph) { SumaRadkuDPH += item.KC + item.ZAOKROUHLENI; } if (nastavitKCdleDPH) { predpis.PRPL_PREDPIS = SumaRadkuDPH; } else { if (SumaRadkuDPH != predpis.PRPL_PREDPIS) { throw new Exception(String.Format("nesouhlasí částka předpisu {0} \n s rozpisem DPH {1}", predpis.PRPL_PREDPIS, SumaRadkuDPH)); } } } #endregion DPH - zkontrolovani celkove castky, zaokrouhleni //povkladam radkyDph foreach (var item in radkyDph) { P_PRPL_DPH dphr = new P_PRPL_DPH(uow); DPHRozpisPredp tmp = new DPHRozpisPredp(); Utils.copy.CopyDlePersistentAttr <DPHRozpisPredp>(item, tmp); Utils.copy.CopyDlePersistentAttr <P_PRPL_DPH>(tmp, dphr); prIns.P_PRPL_DPH.Add(dphr); } uow.CommitTransaction(); Utils.copy.CopyDlePersistentAttr <PREDPIS_RESP>(predpis, Resp); Resp.result = Result.OK; Resp.status = Status.INSERTED; Utils.copy.CopyDlePersistentAttr <PREDPIS_RESP>(prIns, Resp); Resp.PRPL_TYPDANE = prIns.PRPL_TYPDANE.TYPDANE_KOD; switch (prIns.PRPL_EXPFIN) { case "ANO": Resp.EXPORTOVAT_DO_FINANCI = SouhlasAnoNe.ANO; break; default: Resp.EXPORTOVAT_DO_FINANCI = SouhlasAnoNe.NE; break; } foreach (var item in prIns.P_PRPL_DPH) { RADEK_DPH respDphRow = new RADEK_DPH(); DPHRozpisPredp tmp = new DPHRozpisPredp(); Utils.copy.CopyDlePersistentAttr <DPHRozpisPredp>(item, tmp); Utils.copy.CopyDlePersistentAttr <RADEK_DPH>(tmp, respDphRow); Resp.RADKY_DPH.Add(respDphRow); } try { if (prIns.PRPL_EXPFIN == "ANO") { dbu.PredpisExport((int)prIns.CompoundKey.PRPL_POPLATEK, prIns.CompoundKey.PRPL_PER, (int)Resp.PRPL_UCETMESIC, (int)Resp.PRPL_UCETROK, Resp.PRPL_ID); } } catch (Exception exc) { } return(Resp); } //uow } catch (Exception exc) { Resp.result = Result.ERROR; if (exc.InnerException == null) { Resp.ERRORMESS = exc.Message; } else { Resp.ERRORMESS = exc.InnerException.Message; } Util.Util.WriteLog(Resp.ERRORMESS + "\n" + exc.StackTrace); return(Resp); /* * throw new Exception(String.Format("chyba \n {0}", exc.InnerException.Message)); */ } }
/// <summary> /// uhrady za VS /// </summary> /// <param name="session"></param> /// <param name="EXT_APP_KOD"></param> /// <param name="VS"></param> /// <returns></returns> public UHRADY_RESP DejUhrady(Session session, int EXT_APP_KOD, string VS) { Session sesna = session; UHRADY_RESP plResp = new UHRADY_RESP(); plResp.status = Status.NOTEXISTS; #region kontrola vsupnich udaju try { if (EXT_APP_KOD == null) { throw new Exception("kód externí aplikace není zadán"); } if (string.IsNullOrEmpty(VS)) { throw new Exception("VS není zadán"); } P_LIKEVS likevs = sesna.FindObject <P_LIKEVS>(CriteriaOperator.Parse("LIKEVS_VS = ?", VS)); if (likevs == null) { plResp.status = Status.NOTEXISTS; plResp.result = Result.OK; return(plResp); } //zda je pristup na poplatek KONTROLA_POPLATKU kp = new KONTROLA_POPLATKU(sesna, EXT_APP_KOD); if (!kp.EAexist()) { throw new Exception("chybný kód externí aplikace"); } if (!kp.existPravoNadPoplatkem(likevs.CompoundKey1.LIKEVS_POPLATEK)) { throw new Exception("k pohledávce neexistuje oprávnění"); } } catch (Exception exc) { plResp.result = Result.ERROR; if (exc.InnerException == null) { plResp.ERRORMESS = exc.Message; } else { plResp.ERRORMESS = exc.InnerException.Message; } return(plResp); /* * throw new Exception(String.Format("chyba \n {0}", exc.InnerException.Message)); */ } #endregion kontrola vstupnich udaju //setridim vzestupne dle PLATBA_ID XPCollection <P_PLATBA> platby = new XPCollection <P_PLATBA>(sesna, CriteriaOperator.Parse("PLATBA_VS = ?", VS), new SortProperty("PLATBA_ID", SortingDirection.Ascending)); foreach (var item in platby) { PLATBA pl = new PLATBA(); Utils.copy.CopyDlePersistentAttr <PLATBA>(item, pl); plResp.UHRADY.Add(pl); } plResp.result = Result.OK; if (platby.Count > 0) //0.27 { plResp.status = Status.EXISTS; } return(plResp); }
public PLATCE_RESP InsertPlatce(Session sesna, int EXT_APP_KOD, PLATCE platce, P_RGP rgp, bool nastavitKCdleDPH) { PLATCE_RESP Resp = new PLATCE_RESP(); CriteriaOperator criteria; platce.RGP_EA = EXT_APP_KOD; Type sesnaType = null; Type unitOfWorkType = null; bool commituj = false; if (sesna is DevExpress.Xpo.Session) { commituj = (sesna == null) ? true : (!sesna.InTransaction); sesnaType = typeof(DevExpress.Xpo.Session); } if (sesna is DevExpress.Xpo.UnitOfWork) { commituj = false; unitOfWorkType = typeof(DevExpress.Xpo.UnitOfWork); } try { #region kontrola v pripade transakce - nejak musim vratit vysledek, k tomu se pouzije objekt rgp if (((sesna.InTransaction) && (rgp == null)) || ((sesna is DevExpress.Xpo.UnitOfWork) && (rgp == null))) { string thisNamespace = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace; string thisMethodName = System.Reflection.MethodBase.GetCurrentMethod().Name; throw new Exception(string.Format("Proměnná \"rgp\" ve volání metody {0}.{1} není inicializována.", thisNamespace, thisMethodName)); } #endregion kontrola v pripade transakce #region kontrola ext.aplikace if (EXT_APP_KOD == null) { throw new Exception("kód externí aplikace není zadán"); } P_EXTAPP EA = sesna.GetObjectByKey <P_EXTAPP>(EXT_APP_KOD); if (EA == null) { throw new Exception("chybný kód externí aplikace"); } if ((int)platce.RGP_POPLATEK == 0) { throw new Exception("kód poplatku není zadán"); } KONTROLA_POPLATKU kp = new KONTROLA_POPLATKU(sesna, EXT_APP_KOD); if (!kp.EAexist()) { throw new Exception("chybný kód externí aplikace"); } if (!kp.existPravoNadPoplatkem(platce.RGP_POPLATEK)) { throw new Exception("Ext. aplikace nemá oprávnění k typu pohledávky."); } #endregion kontrola ext.apliace #region kontrola prava nad poplatkem PravoNadPoplatkem pnp = null; try { pnp = new PravoNadPoplatkem(sesna); } catch (Exception e) { throw new Exception("kontrola přístup. práv uživatele nad daty Příjmové agendy skončila chybou" + "\n" + e.Message); } //pro platce je povoleno vkladani if (!pnp.PravoExist((int)platce.RGP_POPLATEK, PravoNadPoplatkem.PrtabTable.RGP, PravoNadPoplatkem.SQLPerm.INSERT)) { throw new Exception("PoplWS - nedostatečná oprávnění"); } #endregion kontrola prava nad poplatkem #region test, zda adresa existuje v P_ADRESA_ROBRHS, dohledani ADR_ICO criteria = CriteriaOperator.Parse("ADR_ID = ?", platce.OSOBA_ID); XPCollection <P_ADRESA_ROBRHS> adr = new XPCollection <P_ADRESA_ROBRHS>(sesna, criteria); if (adr.Count != 1) { Resp.result = Result.ERROR; Resp.ERRORMESS = String.Format(@"osoba ID={0} neexistuje", platce.OSOBA_ID); return(Resp); } platce.RGP_ICO = adr[0].ADR_ICO; #endregion test, zda adresa existuje #region DOPLKOD - nastaveni pokud je null, TRIM, odstraneni nasobnych mezer if (platce.RGP_DOPLKOD == null) { platce.RGP_DOPLKOD = " "; } else { platce.RGP_DOPLKOD = platce.RGP_DOPLKOD.Trim(); } if (platce.RGP_DOPLKOD == String.Empty) { platce.RGP_DOPLKOD = " "; } while (platce.RGP_DOPLKOD.IndexOf(" ") >= 0) { platce.RGP_DOPLKOD = platce.RGP_DOPLKOD.Replace(" ", " "); } #endregion DOPLKODU - nastaveni, pokud je null, TRIM, odstraneni nasobnych mezer #region test zda neexists v P_RGP DBUtil dbu = new DBUtil(sesna); C_EVPOPL evp = dbu.GetEvpopl(platce.RGP_POPLATEK, platce.RGP_PER); criteria = CriteriaOperator.Parse("CompoundKey1.RGP_POPLATEK = ?" + " and CompoundKey1.RGP_ICO = ?" + " and CompoundKey1.RGP_DOPLKOD = ?", platce.RGP_POPLATEK, platce.RGP_ICO, platce.RGP_DOPLKOD); XPCollection <P_RGP> plceExist = new XPCollection <P_RGP>(sesna, criteria); foreach (P_RGP item in plceExist) { if (item.CompoundKey1.RGP_PER == platce.RGP_PER) { Resp.result = Result.OK; Resp.status = Status.EXISTS; Utils.copy.CopyDlePersistentAttr <PLATCE_RESP>(plceExist[0], Resp); Resp.RGP_POPLATEK = plceExist[0].CompoundKey1.RGP_POPLATEK; Resp.RGP_PER = plceExist[0].CompoundKey1.RGP_PER; Resp.RGP_DOPLKOD = plceExist[0].CompoundKey1.RGP_DOPLKOD; Resp.OSOBA_ID = platce.OSOBA_ID; Resp.RGP_ID = plceExist[0].RGP_ID; Resp.VS = DejVS(sesna, evp, plceExist[0].RGP_PORVS); //0.35 return(Resp); } } if (plceExist.Count > 0) { platce.RGP_PORVS = plceExist[0].RGP_PORVS; Resp.VS = DejVS(sesna, evp, plceExist[0].RGP_PORVS); //0.35 } #endregion test zda exists v P_RGP nastavitKCdleDPH = nastavitKCdleDPH && platce.RADKY_DPH.Count > 0; if (((int)platce.RGP_KCROK == 0) && nastavitKCdleDPH && (platce.RADKY_DPH.Count > 0)) { platce.RGP_KCROK = 1; } #region vypocet splatky short pocSplatek = 0; short periodicita = 0; decimal kcSplatka = 0, poslSplatka = 0; dbu.GetRgpSplatky(platce.RGP_KCROK, platce.RGP_PER, ref kcSplatka, ref poslSplatka, ref pocSplatek, ref periodicita); if (periodicita != 365) { if ((int)platce.RGP_KCROK == 0) { throw new Exception(String.Format(@"částka není zadána (KC_ZAROK)")); } if (poslSplatka == 0) { throw new Exception(String.Format(@"Nelze určit výši splátky pro roční výši předpisu {0} Kč", platce.RGP_KCROK)); } } platce.RGP_KCSPLATKA = kcSplatka; platce.RGP_POSLSPLATKA = poslSplatka; #endregion vypocet splatky #region vypocet splatek DPH, zaokrouhleni DPH List <DPHRozpis> dphSplatka = new List <DPHRozpis>(); List <DPHRozpis> dphPoslSplatka = new List <DPHRozpis>(); if (platce.RADKY_DPH.Count > 0) { //rozpocitam radky DPH na splatky a posledni splatku DPHRozpis dpr; foreach (RADEK_DPH item in platce.RADKY_DPH) { if (item.ZAKLAD == 0) { continue; } dpr = new DPHRozpis(); Utils.copy.CopyDlePersistentAttr(item, dpr); dpr.ZAKLAD = item.ZAKLAD / pocSplatek; dpr.DAN = item.ZAKLAD * ((item.SAZBA ?? 0) / 100); dpr.KC = dpr.ZAKLAD + dpr.DAN; dphSplatka.Add(dpr); dpr = new DPHRozpis(); Utils.copy.CopyDlePersistentAttr(item, dpr); decimal splatka = item.ZAKLAD / pocSplatek; dpr.ZAKLAD = item.ZAKLAD - (splatka * (pocSplatek - 1)); dpr.DAN = item.ZAKLAD * ((item.SAZBA ?? 0) / 100); dpr.KC = dpr.ZAKLAD + dpr.DAN; dphPoslSplatka.Add(dpr); } DPHZaokrouhleni dphZaokr = new DPHZaokrouhleni(); dphZaokr.DPHZaokrouhli(dphSplatka, platce.RGP_POPLATEK, sesna); dphZaokr.DPHZaokrouhli(dphPoslSplatka, platce.RGP_POPLATEK, sesna); //sectu vsechny radky DPH a vytvorim do posledni splatky radek dorovnani decimal sumDphRowsSplatka = 0, sumDphRowsPoslSplatka = 0, diff = 0; foreach (DPHRozpis item in dphSplatka) { sumDphRowsSplatka += item.KC + item.ZAOKROUHLENI; } foreach (DPHRozpis item in dphPoslSplatka) { sumDphRowsPoslSplatka += item.KC + item.ZAOKROUHLENI; } //0.19 sumDphRowsSplatka = Utils.Mathm.ZaokrouhliDouble(sumDphRowsSplatka, 2); sumDphRowsPoslSplatka = Utils.Mathm.ZaokrouhliDouble(sumDphRowsPoslSplatka, 2); platce.RGP_KCSPLATKA = sumDphRowsSplatka; platce.RGP_POSLSPLATKA = sumDphRowsPoslSplatka; diff = 0; if (!nastavitKCdleDPH) //0.19 - do 0.19 nebyla podminka { diff = platce.RGP_KCROK - (sumDphRowsSplatka * (pocSplatek - 1)) - sumDphRowsPoslSplatka; } diff = Utils.Mathm.ZaokrouhliDouble(diff, 2); if (diff != 0) { dpr = new DPHRozpis(); dpr.KAT = 'R'; dpr.ZAKLAD = diff; dpr.KC = diff; dpr.SAZBA = null; dpr.POZNAMKA = "dorovnání"; dphPoslSplatka.Add(dpr); sumDphRowsPoslSplatka += diff; platce.RGP_POSLSPLATKA = sumDphRowsPoslSplatka; //0.20 } //0.9 kontrola splatky a posledni splatky #region kontrola splatky, posledni splatky if (nastavitKCdleDPH) { platce.RGP_KCSPLATKA = sumDphRowsSplatka; platce.RGP_POSLSPLATKA = sumDphRowsPoslSplatka; platce.RGP_KCROK = (sumDphRowsSplatka * (pocSplatek - 1)) + sumDphRowsPoslSplatka; } else { if (platce.RGP_KCROK != (sumDphRowsSplatka * (pocSplatek - 1)) + sumDphRowsPoslSplatka) { throw new Exception(string.Format("Nesouhlasí celková výše Kč ({0}) s rozpisem DPH ({1}).", platce.RGP_KCROK, (sumDphRowsSplatka * (pocSplatek - 1)) + sumDphRowsPoslSplatka)); } if (sumDphRowsSplatka != platce.RGP_KCSPLATKA) { throw new Exception(string.Format("Nesouhlasí výše splátky ({0}) s rozpisem DPH splátky ({1}).", platce.RGP_KCSPLATKA, sumDphRowsSplatka)); } if (sumDphRowsPoslSplatka != platce.RGP_POSLSPLATKA) { throw new Exception(string.Format("Nesouhlasí výše poslední splátky ({0}) s rozpisem DPH poslední splátky ({1}).", platce.RGP_POSLSPLATKA, sumDphRowsPoslSplatka)); } } #endregion kontrola splatky, posledni splatky } #endregion vypocet splatek DPH, zaokrouhledni DPH #region perioda existuje pro poplatek if (evp == null) { Resp.result = Result.ERROR; Resp.ERRORMESS = "nepovolená kombinace poplatek / perioda"; return(Resp); } #endregion perioda existuje pro poplatek #region pouziti vkladaneho VS if (!string.IsNullOrEmpty(platce.VS)) { int porvs; if (!korektniVS(sesna, platce, evp, out porvs)) { Resp.result = Result.ERROR; //0.16 Resp.ERRORMESS = string.Format("chybný VS {0}", platce.VS); return(Resp); } platce.RGP_PORVS = porvs; } #endregion pouziti vkladaneho VS { if ((sesna.GetType().BaseType == sesnaType) && (!sesna.InTransaction)) { sesna.BeginTransaction(); } try { XPCollection <P_RGP> plceInserted; if (rgp == null) { rgp = new P_RGP(sesna); } Utils.copy.CopyDlePersistentAttr <P_RGP>(platce, rgp); rgp.CompoundKey1.RGP_POPLATEK = platce.RGP_POPLATEK; rgp.CompoundKey1.RGP_PER = platce.RGP_PER; rgp.CompoundKey1.RGP_DOPLKOD = platce.RGP_DOPLKOD; rgp.CompoundKey1.RGP_ICO = platce.RGP_ICO; rgp.Save(); //povkladam rozpis dane foreach (DPHRozpis item in dphSplatka) { P_RGP_DPHSPL rd = new P_RGP_DPHSPL(sesna); Utils.copy.CopyDlePersistentAttr <P_RGP_DPHSPL>(item, rd); rgp.P_RGP_DPHSPL.Add(rd); rd.Save(); } foreach (DPHRozpis item in dphPoslSplatka) { P_RGP_DPHPSPL rd = new P_RGP_DPHPSPL(sesna); DPHRozpisTmp tmp = new DPHRozpisTmp(); Utils.copy.CopyDlePersistentAttr <DPHRozpisTmp>(item, tmp); Utils.copy.CopyDlePersistentAttr <P_RGP_DPHPSPL>(tmp, rd); rgp.P_RGP_DPHPSPL.Add(rd); rd.Save(); } if (commituj && (sesna.InTransaction)) { sesna.CommitTransaction(); } Utils.copy.CopyDlePersistentAttr <PLATCE_RESP>(rgp, Resp); Resp.result = Result.OK; Resp.status = Status.INSERTED; Resp.RGP_POPLATEK = rgp.CompoundKey1.RGP_POPLATEK; Resp.RGP_PER = rgp.CompoundKey1.RGP_PER; Resp.RGP_DOPLKOD = rgp.CompoundKey1.RGP_DOPLKOD; Resp.OSOBA_ID = platce.OSOBA_ID; Resp.RGP_ID = rgp.RGP_ID; if (Resp.VS == null) { Resp.VS = DejVS(sesna, evp, plceExist[0].RGP_PORVS); //0.35 } switch (rgp.RGP_EXPUCTO) { case "ANO": Resp.EXPORTOVAT_DO_FINANCI = SouhlasAnoNe.ANO; break; default: Resp.EXPORTOVAT_DO_FINANCI = SouhlasAnoNe.NE; break; } return(Resp); } catch (Exception exc) { if (sesna.InTransaction) { sesna.RollbackTransaction(); } Resp.result = Result.ERROR; if (exc.InnerException == null) { Resp.ERRORMESS = exc.Message; } else { Resp.ERRORMESS = exc.InnerException.Message; } return(Resp); /* * throw new Exception(String.Format("chyba \n {0}", exc.InnerException.Message)); */ } } //using (MyUnitOfWork } catch (Exception exc) { Resp.result = Result.ERROR; if (exc.InnerException == null) { Resp.ERRORMESS = exc.Message; } else { Resp.ERRORMESS = exc.InnerException.Message; } Util.Util.WriteLog(Resp.ERRORMESS + exc.StackTrace); return(Resp); /* * throw new Exception(String.Format("chyba \n {0}", exc.InnerException.Message)); */ } }
/// <summary> /// popis vazby je v PoplWS- Výměna dat za komOdpad.* /// metoda je urcena pro data představující slevy. K exportu je urcena je určena metoda DejPlatceZaKO. /// Vyexportovanou davku je potreba do 30 dnu naimportovat, jinak je původni export odstranen a je potreba /// export provést znovu. /// /// uziv. musi mit select, insert, update, delete on P_ODPADY_EULEVY /// /// </summary> /// <param name="sesna"></param> /// <param name="EXT_APP_KOD"></param> /// <param name="inParams"></param> /// pokud je inParams.VS ="*" jsou vráceni všichni poplatníci /// <returns></returns> public POPLATNIK_SLEVA_RESP PlatceSlevaKO(Session sesna, int EXT_APP_KOD, POPLATNIK_SLEVA inParams) { POPLATNIK_SLEVA_RESP Resp = new POPLATNIK_SLEVA_RESP(); Resp.status = Status.ERROR; Resp.result = Result.ERROR; sesna.DropIdentityMap(); string poplKO = string.Empty; decimal popl; try { #region kontrola vyberovych parametru if (string.IsNullOrWhiteSpace(inParams.PERIODA)) { throw new Exception("Výběrová podmínka PERIODA není zadána."); } if (string.IsNullOrWhiteSpace(inParams.DAVKA_ID)) { throw new Exception("Výběrová podmínka DAVKA_ID není zadána."); } if (inParams.POPLATEK == null) { throw new Exception("Výběrová podmínka POPLATEK není zadán."); } #endregion kontrola vyberovych parametru #region kontrola prava na poplatek if (EXT_APP_KOD == null) { throw new Exception("kód externí aplikace není zadán"); } KONTROLA_POPLATKU kp = new KONTROLA_POPLATKU(sesna, EXT_APP_KOD); if (!kp.EAexist()) { throw new Exception("chybný kód externí aplikace"); } popl = decimal.ToInt16(inParams.POPLATEK); if (!kp.existPravoNadPoplatkem(popl)) { //throw new Exception("k typu pohledávky neexistuje oprávnění"); throw new Exception("Ext. aplikace nemá oprávnění k typu pohledávky."); } #endregion kontrola prava na poplatek #region kontrola prava na vkladani predpisu PravoNadPoplatkem pnp = null; try { pnp = new PravoNadPoplatkem(sesna); } catch (Exception) { throw new Exception("kontrola přístup. práv uživatele nad daty Příjmové agendy skončila chybou"); } //pro platce je povoleno prohlizeni if (!pnp.PravoExist(Decimal.ToInt16(popl), PravoNadPoplatkem.PrtabTable.PRPL, PravoNadPoplatkem.SQLPerm.INSERT)) { throw new Exception("PoplWS - nedostatečná oprávnění pro vkládání předpisů."); } #endregion kontrola prava na vkladani predpisu DBUtil dbu = new DBUtil(sesna); bool jeToPoplKO = dbu.IsPoplKO(inParams.POPLATEK, out poplKO); #region pouze poplatek za KO if (!jeToPoplKO) { throw new Exception(string.Format("Kontrola přístup. práv skončila chybou - ({0}) nejedná se o poplatek za kom. odpad.", inParams.POPLATEK)); } #endregion pouze poplatek za KO #region perioda opdovida spravnemu poplatku string poplDlePer = dbu.getPoplzPerKod(inParams.PERIODA, poplKO); if (poplDlePer != popl.ToString()) { throw new Exception(string.Format("Kontrola přístup. práv skončila chybou. \n Perioda \"{0}\" neodpovídá poplatku \"{1}\".", inParams.PERIODA, popl)); } #endregion perioda opdovida spravnemu poplatku #region davka je max. 30 dni od exportu P_ODPADY_EULEVY ulevy = sesna.FindObject <P_ODPADY_EULEVY>(CriteriaOperator.Parse("DAVKA = ? and ZPRAC = 'E' ", inParams.DAVKA_ID)); if (ulevy == null) { throw new Exception(string.Format("Exportovaná dávka \"{0}\" není platnou dávkou pro import.", inParams.DAVKA_ID)); } int stariDat = int.MinValue; int.TryParse(System.Web.Configuration.WebConfigurationManager.AppSettings["KOExpDatExpiraceDni"], out stariDat); //pri neuspechu je stariDat=0 DBValue dbv = DBValue.Instance(sesna); if (ulevy.ENTRYDATE <= dbv.DBSysDate.AddDays(stariDat * -1)) { throw new Exception(string.Format("Importovaná data jsou starší než povolených {0} dní od data exportu.", stariDat)); } #endregion davka je max. 30 dni od exportu if (inParams.SLEVA != null && inParams.SLEVA.Count() > 0) { if (!UtilDataKO.smazStarouDavkuSlev(sesna, EXT_APP_KOD, inParams.DAVKA_ID, inParams.PERIODA, ref Resp)) { return(Resp); } Resp.result = Result.OK; Resp.status = Status.EXISTS; UtilDataKO.ulozSlevyDoDB(sesna, EXT_APP_KOD, inParams, ref Resp); } else { Resp.result = Result.ERROR; Resp.status = Status.NOTEXISTS; Resp.ERRORMESS = "Pro import slev nebyla zaslána žádná sleva."; } return(Resp); } catch (Exception exc) { Resp.result = Result.ERROR; Resp.status = Status.ERROR; if (exc.InnerException == null) { Resp.ERRORMESS = exc.Message; } else { Resp.ERRORMESS = exc.InnerException.Message; } // // throw new Exception(String.Format("chyba \n {0}", exc.InnerException.Message)); // return(Resp); } }
/// </summary> /// <param name="sesna"></param> /// <param name="EXT_APP_KOD"></param> /// <param name="inParams"></param> /// pokud neni inParams.VS uvedeny (string.IsNullOrEmpty()) jsou vráceni všichni poplatníci /// <returns></returns> public PLATCI_RESP DejPlatceKO(Session sesna, int EXT_APP_KOD, GET_PLATCE_PARAMS inParams) { PLATCI_RESP Resp = new PLATCI_RESP(); Resp.status = Status.ERROR; Resp.result = Result.ERROR; sesna.DropIdentityMap(); int popl; StringBuilder cmd = new StringBuilder(); string VSlog = null; try { #region kontrola vyberovych parametru if (string.IsNullOrWhiteSpace(inParams.PERIODA)) { throw new Exception("Výběrová podmínka PERIODA není zadána."); } popl = decimal.ToInt16(inParams.POPLATEK); #endregion kontrola vyberovych parametru #region kontrola prava aplikace na poplatek if (EXT_APP_KOD == null) { throw new Exception("kód externí aplikace není zadán"); } KONTROLA_POPLATKU kp = new KONTROLA_POPLATKU(sesna, EXT_APP_KOD); if (!kp.EAexist()) { throw new Exception("chybný kód externí aplikace"); } if (!kp.existPravoNadPoplatkem(popl)) { throw new Exception("Ext. aplikace nemá oprávnění k typu pohledávky."); } #endregion kontrola prava aplikace na poplatek #region kontrola prava na cteni platce PravoNadPoplatkem pnp = null; try { pnp = new PravoNadPoplatkem(sesna); } catch (Exception) { throw new Exception("kontrola přístup. práv uživatele nad daty Příjmové agendy skončila chybou"); } if (!pnp.PravoExist(popl, PravoNadPoplatkem.PrtabTable.RGP, PravoNadPoplatkem.SQLPerm.SELECT)) { throw new Exception("PoplWS - nedostatečná oprávnění pro čtení plátce."); } #endregion kontrola prava na cteni platce DBUtil dbu = new DBUtil(sesna); #region perioda s rocni periodicitou C_EVPOPL evp = dbu.GetEvpopl(popl, inParams.PERIODA); if (evp.CompoundKey1.EVPOPL_PER.PERIODA_POC != 1) { throw new Exception(string.Format("Kontrola přístup. práv skončila chybou. \n Perioda \"{0}\" musí mít periodicitu = \"1\".", inParams.PERIODA)); } #endregion perioda s rocni periodicitou string poplKO; bool jeToPoplKO = dbu.IsPoplKO(inParams.POPLATEK, out poplKO); #region pouze poplatek za KO if (!jeToPoplKO) { throw new Exception(string.Format("Kontrola přístup. práv skončila chybou - ({0}) nejedná se o poplatek za kom. odpad.", inParams.POPLATEK)); } #endregion pouze poplatek za KO #region perioda opdovida spravnemu poplatku string poplDlePer = dbu.getPoplzPerKod(inParams.PERIODA, poplKO); if (poplDlePer != popl.ToString()) { throw new Exception(string.Format("Kontrola přístup. práv skončila chybou. \n Perioda \"{0}\" neodpovídá poplatku \"{1}\".", inParams.PERIODA, popl)); } #endregion perioda opdovida spravnemu poplatku #if !DEBUG //region pouze pro periodicitu s jednou periodou za rok #region pouze pro periodicitu s jednou periodou za rok C_PERIODA per = sesna.FindObject <C_PERIODA>(CriteriaOperator.Parse("PERIODA_PERIODA = ?", inParams.PERIODA)); try { if ((per != null) && (per.PERIODA_POC != 1)) { throw new Exception(string.Format("Data za kom. odpad lze získat pouze za periodu s roční periodicitou.")); } } catch (Exception e) { throw new Exception(string.Format("Kontrola periodicity. \n {0}", e.Message)); } #endregion pouze pro periodicitu s jednou periodou za rok #endif //DEBUG PLATCE2 platce = null; bool dataSmazana = false; string message; UtilDataKO.smazStarouDavku(sesna, EXT_APP_KOD, inParams.PERIODA, out dataSmazana, ref Resp); if (!dataSmazana) { return(Resp); } DBVal dbv = new DBVal(sesna); IDBValFactory idbv = dbv.CreateDBV(); cmd.Append("select distinct bl.LIKEVS_VS POPL_VS, b.ADR_NAZEV1 POPL_NAZEV, al.LIKEVS_VS ZAST_VS, a.ADR_NAZEV1 ZAST_NAZEV,"); cmd.Append(" a.ADR_DATNAR ZAST_DATNAR, b.ADR_DATNAR POPL_DATNAR, bl.LIKEVS_POHL, a.ADR_ICZUJ_NAZEV,"); if (idbv.Database == typeof(MSSQL)) { cmd.Append(" dbo.P_ADRESA_ULICE(a.ADR_KODCOB_NAZEV, a.ADR_KODUL_NAZEV, a.ADR_CIS_DOMU, a.ADR_CIS_OR, a.ADR_ZNAK_CO) ZAST_ADR,"); cmd.Append(" dbo.P_ADRESA_ULICE(b.ADR_KODCOB_NAZEV, b.ADR_KODUL_NAZEV, b.ADR_CIS_DOMU, b.ADR_CIS_OR, b.ADR_ZNAK_CO) POPL_ADR,"); } else { cmd.Append(" P_ADRESA_ULICE(a.ADR_KODCOB_NAZEV, a.ADR_KODUL_NAZEV, a.ADR_CIS_DOMU, a.ADR_CIS_OR, a.ADR_ZNAK_CO) ZAST_ADR,"); cmd.Append(" P_ADRESA_ULICE(b.ADR_KODCOB_NAZEV, b.ADR_KODUL_NAZEV, b.ADR_CIS_DOMU, b.ADR_CIS_OR, b.ADR_ZNAK_CO) POPL_ADR,"); } cmd.Append(" RGP_KCROK POPL_KC, RGP_POPLATEK, RGP_PER "); cmd.Append("from P_ADRESA_ROBRHS a, P_LIKEVS al, P_ODPADY_MAJITEL, P_ODPADY_BYDLIC,"); cmd.Append(" P_ADRESA_ROBRHS b, P_LIKEVS bl, P_RGP"); cmd.Append(" where a.ADR_ICO = al.LIKEVS_ICO"); //cmd.Append(" and al.LIKEVS_POPLATEK = (select KONF_POPLATEK from P_ODPADY_KONFIG)"); cmd.Append(" and al.LIKEVS_POPLATEK = "+ popl.ToString()); cmd.Append(" and al.LIKEVS_ICO = MAJITEL_ICO"); cmd.Append(" and MAJITEL_OBJEKT_BYT = BYDLICI_OBJEKT_BYT"); cmd.Append(" and BYDLICI_OBJEKT_BYT > -1"); cmd.Append(" and BYDLICI_DATUM_OD < "+ idbv.getParamText("KONEC_ROKU")); cmd.Append(" and (BYDLICI_DATUM_DO >= " + idbv.getParamText("ZACATEK_ROKU") + " or BYDLICI_DATUM_DO is null)"); cmd.Append(" and BYDLICI_OSVOBOZEN = 'N' "); cmd.Append(" and b.ADR_ICO = bl.LIKEVS_ICO"); //cmd.Append(" and bl.LIKEVS_POPLATEK = (select KONF_POPLATEK from P_ODPADY_KONFIG)"); cmd.Append(" and bl.LIKEVS_POPLATEK = "+ popl.ToString()); cmd.Append(" and bl.LIKEVS_POPLATEK = RGP_POPLATEK"); cmd.Append(" and bl.LIKEVS_PORVS = RGP_PORVS"); cmd.Append(" and RGP_KCROK > 0"); cmd.Append(" and bl.LIKEVS_ICO = BYDLICI_ICO"); cmd.Append(" and RGP_PER = MAJITEL_PERIODA"); cmd.Append(" and BYDLICI_PERIODA = MAJITEL_PERIODA"); if (!string.IsNullOrEmpty(inParams.VS) && (inParams.VS != "*")) { cmd.Append(" and bl.LIKEVS_VS = '"+ inParams.VS + "'"); } cmd.Append(" and BYDLICI_PERIODA = '" + inParams.PERIODA + "'"); cmd.Append("UNION "); cmd.Append("select distinct al.LIKEVS_VS POPL_VS, a.ADR_NAZEV1 POPL_NAZEV, al.LIKEVS_VS ZAST_VS, a.ADR_NAZEV1 ZAST_NAZEV,"); cmd.Append(" a.ADR_DATNAR ZAST_DATNAR, a.ADR_DATNAR POPL_DATNAR, al.LIKEVS_POHL, a.ADR_ICZUJ_NAZEV,"); if (idbv.Database == typeof(MSSQL)) { cmd.Append(" dbo.P_ADRESA_ULICE(a.ADR_KODCOB_NAZEV, a.ADR_KODUL_NAZEV, a.ADR_CIS_DOMU, a.ADR_CIS_OR, a.ADR_ZNAK_CO) ZAST_ADR,"); cmd.Append(" dbo.P_ADRESA_ULICE(a.ADR_KODCOB_NAZEV, a.ADR_KODUL_NAZEV, a.ADR_CIS_DOMU, a.ADR_CIS_OR, a.ADR_ZNAK_CO) POPL_ADR,"); } else { cmd.Append(" P_ADRESA_ULICE(a.ADR_KODCOB_NAZEV, a.ADR_KODUL_NAZEV, a.ADR_CIS_DOMU, a.ADR_CIS_OR, a.ADR_ZNAK_CO) ZAST_ADR,"); cmd.Append(" P_ADRESA_ULICE(a.ADR_KODCOB_NAZEV, a.ADR_KODUL_NAZEV, a.ADR_CIS_DOMU, a.ADR_CIS_OR, a.ADR_ZNAK_CO) POPL_ADR,"); } cmd.Append(" RGP_KCROK POPL_KC, RGP_POPLATEK, RGP_PER "); cmd.Append("from P_ADRESA_ROBRHS a, P_LIKEVS al, P_ODPADY_BYDLIC, P_RGP"); cmd.Append(" where a.ADR_ICO = al.LIKEVS_ICO"); //cmd.Append(" and al.LIKEVS_POPLATEK = (select KONF_POPLATEK from P_ODPADY_KONFIG)"); cmd.Append(" and al.LIKEVS_POPLATEK = "+ popl.ToString()); cmd.Append(" and al.LIKEVS_ICO = BYDLICI_ICO"); cmd.Append(" and BYDLICI_OBJEKT_BYT = -1 "); cmd.Append(" and BYDLICI_DATUM_OD < "+ idbv.getParamText("KONEC_ROKU")); cmd.Append(" and (BYDLICI_DATUM_DO >= " + idbv.getParamText("ZACATEK_ROKU") + " or BYDLICI_DATUM_DO is null)"); cmd.Append(" and BYDLICI_OSVOBOZEN = 'N' "); cmd.Append(" and BYDLICI_PERIODA = '" + inParams.PERIODA + "'"); cmd.Append(" and al.LIKEVS_POPLATEK = RGP_POPLATEK"); cmd.Append(" and al.LIKEVS_PORVS = RGP_PORVS"); cmd.Append(" and RGP_PER = BYDLICI_PERIODA"); if (!string.IsNullOrEmpty(inParams.VS) && (inParams.VS != "*")) { cmd.Append(" and al.LIKEVS_VS = '"+ inParams.VS + "'"); } cmd.Append(" and RGP_KCROK > 0"); cmd.Append(" order by 3"); List <string> paramNames = new List <string>(); paramNames.Add("ZACATEK_ROKU"); paramNames.Add("KONEC_ROKU"); int rok = Convert.ToInt16(dbv.DBSysDate.ToString("yyyy")); DateTime zacRoku = new DateTime(rok, 1, 31).Date; DateTime konRoku = new DateTime(rok, 12, 31).Date; List <object> paramValues = new List <object>(); paramValues.Add(zacRoku); //ZACATEK_ROKU paramValues.Add(konRoku); //KONEC_ROKU SelectedData resultSet = sesna.ExecuteQueryWithMetadata(cmd.ToString(), paramNames.ToArray(), paramValues.ToArray()); Resp.RGP_POPLATEK = inParams.POPLATEK; Resp.RGP_PER = inParams.PERIODA; int stariDat = int.MinValue; int.TryParse(System.Web.Configuration.WebConfigurationManager.AppSettings["KOExpDatExpiraceDni"], out stariDat); Resp.PLATNOST_DNI = stariDat; foreach (var row in resultSet.ResultSet[1].Rows) { platce = new PLATCE2(); platce.POPLATNIK = new POPLATNIK(); platce.ZASTUPCE = new ZASTUPCE(); VSlog = (string)row.ValByName(resultSet, "POPL_VS"); if (row.ValByName(resultSet, "POPL_KC") != null) { platce.POPLATNIK.RGP_KCROK = Convert.ToDecimal(row.ValByName(resultSet, "POPL_KC")); } if (row.ValByName(resultSet, "POPL_DATNAR") != null) { platce.POPLATNIK.ROK_NAROZENI = Convert.ToInt16(((DateTime)row.ValByName(resultSet, "POPL_DATNAR")).ToString("yyyy")); } platce.POPLATNIK.VS = (string)row.ValByName(resultSet, "POPL_VS"); platce.POPLATNIK.NAZEV = (string)row.ValByName(resultSet, "POPL_NAZEV"); platce.POPLATNIK.ADRESA = (string)row.ValByName(resultSet, "POPL_ADR"); if (!string.IsNullOrEmpty((string)row.ValByName(resultSet, "ADR_ICZUJ_NAZEV"))) { platce.POPLATNIK.ADRESA = platce.POPLATNIK.ADRESA + ", " + (string)row.ValByName(resultSet, "ADR_ICZUJ_NAZEV"); } platce.POPLATNIK.LIKEVS_DLUH = Convert.ToInt16(row.ValByName(resultSet, "LIKEVS_POHL")) > 0 ? 1 : 0; if (row.ValByName(resultSet, "ZAST_DATNAR") != null) { platce.ZASTUPCE.ROK_NAROZENI = Convert.ToInt16(((DateTime)row.ValByName(resultSet, "ZAST_DATNAR")).ToString("yyyy")); } platce.ZASTUPCE.VS = (string)row.ValByName(resultSet, "ZAST_VS"); platce.ZASTUPCE.NAZEV = (string)row.ValByName(resultSet, "ZAST_NAZEV"); platce.ZASTUPCE.ADRESA = (string)row.ValByName(resultSet, "ZAST_ADR"); platce.POPLATNIK.PERIODA = (string)row.ValByName(resultSet, "RGP_PER"); platce.ZASTUPCE.PERIODA = platce.POPLATNIK.PERIODA; Resp.PLATCI.Add(platce); } Resp.result = Result.OK; if ((platce != null) && (Resp.PLATCI.Count() > 0)) { Resp.status = Status.EXISTS; UtilDataKO.ulozDavkuDoDB(sesna, EXT_APP_KOD, ref Resp); } else { Resp.status = Status.NOTEXISTS; } return(Resp); } catch (Exception exc) { Resp.result = Result.ERROR; Resp.status = Status.ERROR; if (exc.InnerException == null) { Resp.ERRORMESS = VSlog + "\n" + exc.Message; } else { Resp.ERRORMESS = VSlog + "\n" + exc.InnerException.Message; } /* * throw new Exception(String.Format("chyba \n {0}", exc.InnerException.Message)); */ #if DEBUG if (cmd.Capacity > 0) { Resp.ERRORMESS = Resp.ERRORMESS + "\n" + cmd.ToString(); //throw new Exception("SQL uloženo do Clipboardu. " + cmd.ToString()); } #endif return(Resp); } }
public POPLATKY_RESP dejSeznam() { POPLATKY_RESP poplResp = new POPLATKY_RESP(); KONTROLA_POPLATKU kp = new KONTROLA_POPLATKU(sesna, EXT_APP_KOD); try { if (!kp.EAexist()) { throw new Exception("chybný kód externí aplikace / neexistuji poplatky s povoleným přístupem"); } } catch (Exception exc) { poplResp.result = Result.ERROR; if (exc.InnerException == null) { poplResp.ERRORMESS = exc.Message; } else { poplResp.ERRORMESS = exc.InnerException.Message; } return(poplResp); /* * throw new Exception(String.Format("chyba \n {0}", exc.InnerException.Message)); */ } XPCollection <C_NAZPOPL> xpoPoplatky = new XPCollection <C_NAZPOPL>(sesna); foreach (var item in xpoPoplatky) { if (!kp.existPravoNadPoplatkem(item.NAZPOPL_POPLATEK)) { continue; } POPLATEK popl = new POPLATEK(); popl.KOD = (int)item.NAZPOPL_POPLATEK; popl.NAZEV = item.C_NAZPOPL_NAZEV; popl.PERIODA = new List <PERIODA>(); foreach (var itemPer in item.C_EVPOPL) { if ((itemPer.EVPOPL_FROMDATE <= dbValue.DBSysDate) && (itemPer.EVPOPL_TODATE >= dbValue.DBSysDate)) { PERIODA perioda = new PERIODA(); perioda.KOD = itemPer.CompoundKey1.EVPOPL_PER.PERIODA_PERIODA; perioda.NAZEV = itemPer.CompoundKey1.EVPOPL_PER.PERIODA_NAZEV; perioda.PERIODICITA = (int)itemPer.CompoundKey1.EVPOPL_PER.PERIODA_POC; popl.PERIODA.Add(perioda); } } poplResp.poplatky.Add(popl); } poplResp.result = Result.OK; poplResp.status = Status.EXISTS; return(poplResp); }