///<summary>Transfers unallocated to unearned (if present) and inserts those results into the database. Then performs transfer. ///This is the best representation of what the income transfer window currently does.</summary> public static PaymentEdit.IncomeTransferData BalanceAndIncomeTransfer(long patNum, Family fam, Payment regularTransferPayment , List <PayPlanCharge> payPlanCharges = null) { //get all paysplits associated to the family passed in List <PaySplit> listSplitsForPat = PaySplits.GetForPats(fam.ListPats.Select(x => x.PatNum).ToList()); //perform unallocated transfer Payment unallocatedTransfer = MakePaymentNoSplits(patNum, 0, payDate: DateTime.Today); PaymentEdit.IncomeTransferData unallocatedResults = PaymentEdit.TransferUnallocatedSplitToUnearned(listSplitsForPat, unallocatedTransfer.PayNum); foreach (PaySplit split in unallocatedResults.ListSplitsCur) { if (split.SplitAmt.IsZero()) { continue; } PaySplits.Insert(split); } foreach (PaySplits.PaySplitAssociated splitAssociated in unallocatedResults.ListSplitsAssociated) { if (splitAssociated.PaySplitOrig != null && splitAssociated.PaySplitLinked != null) { PaySplits.UpdateFSplitNum(splitAssociated.PaySplitOrig.SplitNum, splitAssociated.PaySplitLinked.SplitNum); } } if (payPlanCharges == null) { payPlanCharges = new List <PayPlanCharge>(); } #region claim fix and transfer //both of these methods have objects that get immediately inserted into the database. While testing, a spcific call wil need to be made to delete. ClaimProcs.FixClaimsNoProcedures(fam.ListPats.Select(x => x.PatNum).ToList()); //make dummy procedures and claimprocs for claims missing procs. ClaimProcs.TransferClaimsAsTotalToProcedures(fam.ListPats.Select(x => x.PatNum).ToList()); //transfer AsTotals into claim procedures #endregion return(IncomeTransfer(patNum, fam, regularTransferPayment, payPlanCharges)); }
public static Payment MakePayment(long patNum, double payAmt, DateTime payDate, long payPlanNum = 0, long provNum = 0, long procNum = 0, long payType = 0, long clinicNum = 0, long unearnedType = 0, bool isRecurringCharge = false, DateTime recurringChargeDate = default(DateTime), string externalId = "" , long adjNum = 0) { Payment payment = new Payment(); payment.PatNum = patNum; payment.PayDate = payDate; payment.PayAmt = payAmt; payment.PayType = payType; payment.ClinicNum = clinicNum; payment.DateEntry = payDate; payment.IsRecurringCC = isRecurringCharge; payment.RecurringChargeDate = recurringChargeDate; payment.ExternalId = externalId; Payments.Insert(payment); PaySplit split = new PaySplit(); split.PayNum = payment.PayNum; split.PatNum = payment.PatNum; split.DatePay = payDate; split.ClinicNum = payment.ClinicNum; split.PayPlanNum = payPlanNum; split.AdjNum = adjNum; split.ProvNum = provNum; split.ProcNum = procNum; split.SplitAmt = payAmt; split.DateEntry = payDate; split.UnearnedType = unearnedType; PaySplits.Insert(split); return(payment); }
public static Payment MakePayment(long patNum, double payAmt, DateTime payDate, long payPlanNum = 0, long provNum = 0, long procNum = 0, long payType = 0, long clinicNum = 0, long unearnedType = 0) { Payment payment = new Payment(); payment.PatNum = patNum; payment.PayDate = payDate; payment.PayAmt = payAmt; payment.PayType = payType; payment.ClinicNum = clinicNum; payment.DateEntry = payDate; Payments.Insert(payment); PaySplit split = new PaySplit(); split.PayNum = payment.PayNum; split.PatNum = payment.PatNum; split.DatePay = payDate; split.ClinicNum = payment.ClinicNum; split.PayPlanNum = payPlanNum; split.ProvNum = provNum; split.ProcNum = procNum; split.SplitAmt = payAmt; split.DateEntry = payDate; split.UnearnedType = unearnedType; PaySplits.Insert(split); return(payment); }
public static void InsertPrepaymentSplits(List <PaySplit> listPaysplits, List <PaySplits.PaySplitAssociated> listPaySplitsAssociated) { //Insert paysplits foreach (PaySplit ps in listPaysplits) { PaySplits.Insert(ps); } //Associate prepayments foreach (PaySplits.PaySplitAssociated split in listPaySplitsAssociated) { //Update the FSplitNum after inserts are made. if (split.PaySplitLinked != null && split.PaySplitOrig != null) { PaySplits.UpdateFSplitNum(split.PaySplitOrig.SplitNum, split.PaySplitLinked.SplitNum); } } }
public static List <PaySplit> CreatePaySplitsForPrepayment(Procedure proc, double amtToUse, PaySplit prePaySplit = null, Clinic clinic = null, long prov = 0) { List <PaySplit> retVal = new List <PaySplit>(); long clinicNum = prePaySplit?.ClinicNum ?? clinic?.ClinicNum ?? proc.ClinicNum; long provNum = prePaySplit?.ProvNum ?? prov; if (clinic != null) { clinicNum = clinic.ClinicNum; } if (prov != 0) { provNum = prov; } Def unearnedType = Defs.GetDefByExactName(DefCat.PaySplitUnearnedType, "PrePayment") ?? DefinitionT.CreateDefinition(DefCat.PaySplitUnearnedType, "PrePayment"); Def payType = Defs.GetDefByExactName(DefCat.PaymentTypes, "Check") ?? DefinitionT.CreateDefinition(DefCat.PaymentTypes, "Check"); Payment pay = PaymentT.MakePaymentNoSplits(proc.PatNum, amtToUse, payDate: DateTime.Now, clinicNum: clinicNum, payType: unearnedType.DefNum); PaySplit splitNeg = new PaySplit(); splitNeg.PatNum = prePaySplit?.PatNum ?? proc.PatNum; splitNeg.PayNum = pay.PayNum; splitNeg.FSplitNum = prePaySplit?.SplitNum ?? 0; splitNeg.ClinicNum = clinicNum; splitNeg.ProvNum = provNum; splitNeg.SplitAmt = 0 - amtToUse; splitNeg.UnearnedType = prePaySplit?.UnearnedType ?? unearnedType.DefNum; splitNeg.DatePay = DateTime.Now; PaySplits.Insert(splitNeg); retVal.Add(splitNeg); //Make a different paysplit attached to proc and prov they want to use it for. PaySplit splitPos = new PaySplit(); splitPos.PatNum = prePaySplit?.PatNum ?? proc.PatNum; splitPos.PayNum = pay.PayNum; splitPos.FSplitNum = splitNeg.SplitNum; splitPos.ProvNum = provNum; splitPos.ClinicNum = clinicNum; splitPos.SplitAmt = amtToUse; splitPos.DatePay = DateTime.Now; splitPos.ProcNum = proc.ProcNum; PaySplits.Insert(splitPos); retVal.Add(splitPos); return(retVal); }
public static PaySplit CreateSplit(long clinicNum, long patNum, long payNum, long payplanNum, DateTime procDate, long procNum, long provNum , double splitAmt, long unearnedType) { PaySplit paysplit = new PaySplit() { ClinicNum = clinicNum, PatNum = patNum, PayNum = payNum, PayPlanNum = payplanNum, ProcDate = procDate, ProcNum = procNum, ProvNum = provNum, SplitAmt = splitAmt, UnearnedType = unearnedType }; PaySplits.Insert(paysplit); return(paysplit); }
public static PaySplit CreatePrepayment(long patNum, int amt, DateTime datePay, long provNum = 0, long clinicNum = 0) { Def unearnedType = Defs.GetDefByExactName(DefCat.PaySplitUnearnedType, "PrePayment") ?? DefinitionT.CreateDefinition(DefCat.PaySplitUnearnedType, "PrePayment"); Def payType = Defs.GetDefByExactName(DefCat.PaymentTypes, "Check") ?? DefinitionT.CreateDefinition(DefCat.PaymentTypes, "Check"); Payment pay = PaymentT.MakePaymentNoSplits(patNum, amt, datePay, clinicNum: clinicNum, payType: payType.DefNum); PaySplit split = new PaySplit(); split.PayNum = pay.PayNum; split.PatNum = pay.PatNum; split.DatePay = datePay; split.ClinicNum = pay.ClinicNum; split.PayPlanNum = 0; split.ProvNum = provNum; split.ProcNum = 0; split.SplitAmt = amt; split.DateEntry = datePay; split.UnearnedType = unearnedType.DefNum; PaySplits.Insert(split); return(split); }
///<summary>Use when creating a TP prepayment or a hidden prepayment split (that does not necessariliy need to have a proc) </summary> public static PaySplit CreateTpPrepayment(long patNum, int amt, DateTime datePay, long provNum = 0, long clinicNum = 0, long procNum = 0, bool isHidden = false) { Def unearnedType = Defs.GetDefsForCategory(DefCat.PaySplitUnearnedType).First(x => isHidden?x.ItemValue != "":x.ItemValue == ""); Def payType = Defs.GetDefByExactName(DefCat.PaymentTypes, "Check") ?? DefT.CreateDefinition(DefCat.PaymentTypes, "Check"); Payment pay = PaymentT.MakePaymentNoSplits(patNum, amt, datePay, clinicNum: clinicNum, payType: payType.DefNum); PaySplit split = new PaySplit(); split.PayNum = pay.PayNum; split.PatNum = pay.PatNum; split.DatePay = datePay; split.ClinicNum = pay.ClinicNum; split.PayPlanNum = 0; split.ProvNum = provNum; split.ProcNum = procNum; split.SplitAmt = amt; split.DateEntry = datePay; split.UnearnedType = unearnedType.DefNum; PaySplits.Insert(split); return(split); }