/// <summary> /// vraci pouze hodnotu PLATCE_ID, datumy platnosti ... /// OSOBA_ID, KCROK, KCSPLATKA, POSLSPLATKA vraci hodnotu nula /// metoda je urcena pro stare pripady, kdy ext. agenda zna VS a potrebuje zjistit PLATCE_ID, aby mohla /// pridavat predpisy /// </summary> /// <param name="sesna"></param> /// <param name="EXT_APP_KOD"></param> /// <param name="inParams"></param> /// <returns></returns> public PLATCE_RESP DejPlatce(Session sesna, int EXT_APP_KOD, GET_PLATCE_PARAMS inParams) { PLATCE_RESP Resp = new PLATCE_RESP(); Resp.status = Status.NOTEXISTS; sesna.DropIdentityMap(); int popl; try { #region kontrola vyberovych parametru if (string.IsNullOrWhiteSpace(inParams.VS)) { throw new Exception("Výběrová podmínka není zadána."); } popl = decimal.ToInt16(inParams.POPLATEK); #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"); } 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 na cteni 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.RGP, PravoNadPoplatkem.SQLPerm.SELECT)) { throw new Exception("PoplWS - nedostatečná oprávnění pro čtení plátce."); } #endregion kontrola prava nad platce CriteriaOperator criteria; criteria = CriteriaOperator.Parse("CompoundKey1.LIKEVS_POPLATEK = ? and LIKEVS_VS = ?", inParams.POPLATEK, inParams.VS); XPCollection <P_LIKEVS> vsExist = new XPCollection <P_LIKEVS>(sesna, criteria); XPCollection <P_RGP> plce; if (vsExist.Count > 0) { criteria = CriteriaOperator.Parse("CompoundKey1.RGP_POPLATEK=? and RGP_PORVS=?", vsExist[0].CompoundKey1.LIKEVS_POPLATEK, vsExist[0].LIKEVS_PORVS); plce = new XPCollection <P_RGP>(sesna, criteria, new SortProperty("RGP_ID", SortingDirection.Ascending)); //order by, sort if (plce.Count == 0) { Resp.status = Status.NOTEXISTS; Resp.ERRORMESS = "Plátce neexistuje."; return(Resp); } } else { Resp.status = Status.NOTEXISTS; Resp.ERRORMESS = "VS neexistuje."; return(Resp); } Utils.copy.CopyDlePersistentAttr <PLATCE_RESP>(plce[0], Resp); Resp.RGP_ID = plce[0].RGP_ID; Resp.OSOBA_ID = 0; Resp.RGP_KCROK = 0; Resp.RGP_KCSPLATKA = 0; Resp.RGP_POSLSPLATKA = 0; Resp.RGP_POPLATEK = plce[0].CompoundKey1.RGP_POPLATEK; Resp.RGP_PER = plce[0].CompoundKey1.RGP_PER; Resp.RGP_DOPLKOD = plce[0].CompoundKey1.RGP_DOPLKOD; Resp.EXPORTOVAT_DO_FINANCI = (SouhlasAnoNe)Enum.Parse(typeof(SouhlasAnoNe), plce[0].RGP_EXPUCTO); Resp.result = Result.OK; Resp.status = Status.EXISTS; 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; } 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); } }