/// <summary> /// seznam plateb k predpisu /// predpis KC - je ponizeny o pripadny zaporny predpis či zápornou platbu. Jsou tedy vráceny i předpisy s nulovou částkou - /// jde vlastně o stornovaný předpis. /// KC platby = PLATBA_SPAROVANO - pouze priparovana cast platby k predpisu /// </summary> /// <param name="session"></param> /// <param name="PREDPIS_ID"></param> /// <param name="EXT_APP_KOD"></param> /// <returns></returns> internal UHRADA_PREDPISU_RESP dej_PlatbyKPredpisu(Session session, int EXT_APP_KOD, int PREDPIS_ID) { Session sesna = session; UHRADA_PREDPISU_RESP plResp = new UHRADA_PREDPISU_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"); } P_PRPL pr = sesna.GetObjectByKey <P_PRPL>(PREDPIS_ID); if (pr == null) { plResp.status = Status.NOTEXISTS; } decimal uhrazenoKc = 0; decimal prKc = 0; Util.Util.DejKCReduk(ref prKc, ref uhrazenoKc, pr.USER_PREDPIS, pr.PRPL_SPAROVANO, pr.PRPL_SPAROVANO_MINUSEM); plResp.PREDPIS_KC = prKc; plResp.PREDPIS_KC_UHRAZENO = uhrazenoKc; if (plResp.PREDPIS_KC < 0) { throw new Exception("nejedná se o předpis pohledávky"); } KONTROLA_POPLATKU kp = new KONTROLA_POPLATKU(sesna, EXT_APP_KOD); if (!kp.EAexist()) { throw new Exception("chybný kód externí aplikace"); } if (!kp.existPravoNadPoplatkem(pr.CompoundKey.PRPL_POPLATEK)) { throw new Exception("k pohledávce neexistuje oprávnění"); } #region kontrola prava nad predpisy 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((int)pr.CompoundKey.PRPL_POPLATEK, PravoNadPoplatkem.PrtabTable.PLATBA, PravoNadPoplatkem.SQLPerm.SELECT)) { throw new Exception("PoplWS - nedostatečná oprávnění pro čtení úhrad předpisů."); } #endregion kontrola prava nad predpisy } catch (Exception exc) { plResp.result = Result.ERROR; plResp.PREDPIS_KC = 0; 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 vsupnich udaju XPCollection <P_PAROVANI> par = new XPCollection <P_PAROVANI>(sesna, CriteriaOperator.Parse("CompoundKey1.PAR_PRPL_ID = ? and CompoundKey1.PAR_PLATBA_ID > 0", PREDPIS_ID)); //32006 foreach (var parovani in par) { P_PLATBA pPlatba = sesna.GetObjectByKey <P_PLATBA>(parovani.CompoundKey1.PAR_PLATBA_ID); PLATBA platba = new PLATBA(); Utils.copy.CopyDlePersistentAttr <PLATBA>(pPlatba, platba); platba.PLATBA_PLKC = parovani.PAR_SPARKC; plResp.UHRADY.Add(platba); } plResp.result = Result.OK; plResp.status = Status.EXISTS; return(plResp); }
public UHRADY_RESP InsertUhraduPredpisu(Session session, int EXT_APP_KOD, int PREDPIS_ID, decimal KC, DateTime DATUM_UHRADY, string ZAPLATIL, string DOKLAD, int SS) { Session sesna = session; UHRADY_RESP plResp = new UHRADY_RESP(); plResp.status = Status.NOTEXISTS; P_PRPL prpl; #region kontrola vsupnich udaju try { if (EXT_APP_KOD == null) { throw new Exception("kód externí aplikace není zadán"); } if (PREDPIS_ID == null) { throw new Exception("PREDPIS_ID není zadán"); } prpl = sesna.FindObject <P_PRPL>(CriteriaOperator.Parse("PRPL_ID = ? and PRPL_PREDPIS + PRPL_SANKCE > 0", PREDPIS_ID)); if (prpl == null) { plResp.status = Status.NOTEXISTS; plResp.result = Result.ERROR; { throw new Exception("neexistující předpis"); } } if (KC <= 0) { throw new Exception("nelze vložit zápornou platbu"); } P_NASTAVENI nast = sesna.GetObjectByKey <P_NASTAVENI>("OTEVR_OBDOBI"); string obd = "01." + nast.HODNOTA; DateTime otevrObd = DateTime.ParseExact(obd, "d.M.yyyy", null); if (DATUM_UHRADY < otevrObd) { throw new Exception("datum úhrady není v otevřeném období"); } //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řístp. práv uživatele nad daty Příjmové agendy skončila chybou"); } //pro platby je povoleno vkladani if (!pnp.PravoExist((int)prpl.CompoundKey.PRPL_POPLATEK, PravoNadPoplatkem.PrtabTable.PLATBA, PravoNadPoplatkem.SQLPerm.INSERT)) { throw new Exception("PoplWS - nedostatečná oprávnění pro vkládání plateb."); } #endregion kontrola prava nad poplatkem } 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 decimal prNesparovano = (prpl.PRPL_PREDPIS + prpl.PRPL_SANKCE) - prpl.PRPL_SPAROVANO; try { using (UnitOfWork uow = new UnitOfWork(sesna.DataLayer)) { DBUtil dbu = new DBUtil(sesna); P_PLATBA plIns = new P_PLATBA(uow); plIns.PLATBA_ID = dbu.LIZNI_SEQ("PLATBA_ID"); plIns.PLATBA_VS = prpl.PRPL_VS; plIns.PLATBA_PLDATE = DATUM_UHRADY; plIns.PLATBA_NAUCETDNE = plIns.PLATBA_PLDATE; plIns.PLATBA_PLKC = KC; plIns.PLATBA_PLATCE = ZAPLATIL.SubstrLeft(30); if (!string.IsNullOrWhiteSpace(DOKLAD)) { plIns.PLATBA_DOKLAD = DOKLAD.SubstrLeft(30); } plIns.PLATBA_UCETMESIC = plIns.PLATBA_PLDATE.Month; plIns.PLATBA_UCETROK = plIns.PLATBA_PLDATE.Year; plIns.PLATBA_RECORD = " "; plIns.PLATBA_SS = SS; DBValue dbv = DBValue.Instance(sesna); plIns.LOGIN = dbv.DBUserName; plIns.LASTUPDATE = dbv.DBSysDateTime; plIns.ENTRYLOGIN = plIns.LOGIN; plIns.ENTRYDATE = plIns.LASTUPDATE; plIns.PLATBA_EA = EXT_APP_KOD; plIns.PLATBA_INTOZN = "0"; decimal prKc = prpl.PRPL_PREDPIS + prpl.PRPL_SANKCE; if ((prKc > 0) && (KC > 0) && (prNesparovano > 0)) //kladna platba s kladnym predpisem { P_PAROVANI parovaniIns = new P_PAROVANI(uow); parovaniIns.CompoundKey1.PAR_PRPL_ID = prpl.PRPL_ID; parovaniIns.CompoundKey1.PAR_PLATBA_ID = plIns.PLATBA_ID; if (prNesparovano == KC) { parovaniIns.PAR_SPARKC = KC; } if (Math.Abs(prNesparovano) < Math.Abs(KC)) { parovaniIns.PAR_SPARKC = prNesparovano; } if (Math.Abs(prNesparovano) > Math.Abs(KC)) { parovaniIns.PAR_SPARKC = KC; } parovaniIns.PAR_VYTVRUCNE = "NE"; parovaniIns.PAR_DATE = dbv.DBSysDateTime.ToString("yyMMddHHmmss"); uow.ExecuteNonQuery(String.Format( "insert into P_PR_AKT (PRA_PRPL_ID, PRA_PR, PRA_TYP) values ({0}, {1}, '{2}')", prpl.PRPL_ID, plIns.PLATBA_ID, "+")); } uow.CommitChanges(); plResp.result = Result.OK; plResp.status = Status.INSERTED; return(plResp); } //uow } //try 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)); */ } }