Untitled
unknown
plain_text
a year ago
7.5 kB
12
Indexable
public static void CreateBillingCreditMemo(Decimal refundAmount,Decimal penaltyAmount,Payment_Summary__c paymentSummary ) {
decimal refundingAmount = 0;
if(penaltyAmount>0 && refundAmount>penaltyAmount){
refundingAmount =- penaltyAmount;
}else{
refundingAmount = refundAmount;
}
AcctSeed__Billing__c billing = [SELECT AcctSeed__Credit_Memo_Reason__c, AcctSeed__Accounting_Period__c, AcctSeed__Accounting_Year__c, AcctSeed__Age__c, AcctSeed__Balance__c, AcctSeed__Billing_Cash_Receipt_Count__c, AcctSeed__Billing_City__c, AcctSeed__Billing_Comment__c, AcctSeed__Billing_Contact__c, AcctSeed__Billing_Terms_Name__c, AcctSeed__Billing_Street__c, AcctSeed__Billing_State__c, AcctSeed__Billing_PostalCode__c, AcctSeed__Billing_Format__c, AcctSeed__Billing_Cycle_Start_Date__c, AcctSeed__Billing_Cycle_End_Date__c, AcctSeed__Billing_Country__c, AcctSeed__Cash_Application_Adjustment_Amount__c, AcctSeed__Closed_Accounting_Period__c, AcctSeed__Credit_Memo_Applied_Amount__c, AcctSeed__Currency_Conversion_Rate__c, AcctSeed__Customer__c, AcctSeed__Date__c, AcctSeed__Destination_Address_Override__c, AcctSeed__Discount_Amount__c, AcctSeed__Discount_Due_Date__c, AcctSeed__Discount_Percent__c, AcctSeed__Due_Date2__c, AcctSeed__Funded_Amount__c, AcctSeed__Ledger_Amount__c, AcctSeed__Ledger__c, AcctSeed__Line_Count__c, AcctSeed__Locked_In_AvaTax__c, AcctSeed__Opportunity__c, AcctSeed__Origin_Address_Override__c, AcctSeed__PDF_Email_Status__c, AcctSeed__PO_Number__c, AcctSeed__Paid_Date__c, AcctSeed__Payment_Link__c, AcctSeed__Payment_Site_URL__c, AcctSeed__Payment_Processor__c, AcctSeed__Proprietary_Billing_Number__c, AcctSeed__Received_Amount__c, AcctSeed__Recurring_Billing__c, AcctSeed__Sales_Tax2__c, AcctSeed__Sales_Tax3__c, AcctSeed__Shipping_City__c, AcctSeed__Shipping_Contact__c, AcctSeed__Shipping_Country__c, AcctSeed__Shipping_PostalCode__c, AcctSeed__Shipping_Street__c, AcctSeed__Shipping_State__c, AcctSeed__Status__c, AcctSeed__Sub_Total__c, AcctSeed__Total__c, AcctSeed__Type__c, AcctSeed__VAT_Line_Count__c, Payment_Summary__c, Name, Id
FROM AcctSeed__Billing__c WHERE Payment_Summary__c = :paymentSummary.Id LIMIT 1];
AcctSeed__Billing__c newBilling = billing.clone(false, false, false, false);
insert newBilling;
system.debug('newBilling : '+newBilling.Id);
List<AcctSeed__Billing_Line__c> listBillingLines = [SELECT Id, AcctSeed__Billing_Has_Applied_Records__c, AcctSeed__Billing__c, AcctSeed__Combined_Tax_Rate__c, AcctSeed__Comment__c, AcctSeed__Date__c, AcctSeed__Discount_Amt__c, AcctSeed__Discount_Pct__c, AcctSeed__Employee__c, AcctSeed__Expense_GL_Account__c, AcctSeed__GL_Account_Variable_1__c, AcctSeed__GL_Account_Variable_2__c, AcctSeed__GL_Account_Variable_4__c, AcctSeed__GL_Account_Variable_3__c, AcctSeed__Hours_Units__c, AcctSeed__Inventory_GL_Account__c, AcctSeed__Ledger__c, AcctSeed__Is_VAT_Related__c, AcctSeed__Line_Destination_Address_Override__c, AcctSeed__Line_Origin_Address_Override__c, AcctSeed__Opportunity_Product_Id__c, AcctSeed__List_Price__c, AcctSeed__Parent_Status__c, AcctSeed__Product_Tax_Type__c, AcctSeed__Product_Unit_Cost__c, AcctSeed__Product__c, AcctSeed__Project_Task__c, AcctSeed__Project__c, AcctSeed__Rate__c, AcctSeed__Recurring_Billing_Line__c, AcctSeed__Revenue_GL_Account__c, AcctSeed__Sub_Total__c, AcctSeed__Tax_Amount2__c, AcctSeed__Tax_Group__c, AcctSeed__Tax_Line__c, AcctSeed__Tax_Inclusive__c, AcctSeed__Tax_Rate__c, AcctSeed__Time_Card_Variable_1__c, AcctSeed__Time_Card_Variable_2__c, AcctSeed__Total__c, Inspection_Type__c, Property_Address__City__s, Property_Address__CountryCode__s, Property_Address__GeocodeAccuracy__s, Property_Address__Latitude__s, Property_Address__Longitude__s, Property_Address__PostalCode__s, Property_Address__StateCode__s, Property_Address__Street__s, Property_Address__c
FROM AcctSeed__Billing_Line__c WHERE AcctSeed__Billing__c = :billing.Id];
List<AcctSeed__Billing_Line__c> newBillingLineItems = new List<AcctSeed__Billing_Line__c>();
for (AcctSeed__Billing_Line__c originalItem : listBillingLines) {
AcctSeed__Billing_Line__c newItem = originalItem.clone(false, false, false, false);
newItem.AcctSeed__Billing__c = newBilling.Id;
newItem.AcctSeed__Rate__c = - originalItem.AcctSeed__Rate__c;
newBillingLineItems.add(newItem);
}
if (!newBillingLineItems.isEmpty()) {
insert newBillingLineItems;
}
AcctSeed__Cash_Receipt__c cashReceipt = new AcctSeed__Cash_Receipt__c();
cashReceipt.AcctSeed__Account__c = newBilling.AcctSeed__Customer__c;
cashReceipt.AcctSeed__Amount__c = -refundingAmount;
cashReceipt.AcctSeed__Payment_Reference__c = newBilling.Name+'-'+'Refund';
cashReceipt.AcctSeed__Receipt_Date__c = Date.Today();
cashReceipt.AcctSeed__Purpose__c = 'Customer Refund';
cashReceipt.Payment_Summary__c = newBilling.Payment_Summary__c;
insert cashReceipt;
system.debug('cashReceipt : '+cashReceipt.Id);
AcctSeed__Billing_Cash_Receipt__c billingCashReceipt = New AcctSeed__Billing_Cash_Receipt__c();
billingCashReceipt.AcctSeed__Billing__c = newBilling.Id;
billingCashReceipt.AcctSeed__Cash_Receipt__c = cashReceipt.Id;
billingCashReceipt.AcctSeed__Applied_Amount__c = cashReceipt.AcctSeed__Amount__c ;
insert billingCashReceipt;
system.debug('billingCashReceipt : '+billingCashReceipt.Id);
if(penaltyAmount>0){
AcctSeed__Billing__c penaltyBilling = new AcctSeed__Billing__c();
penaltyBilling.AcctSeed__Customer__c = paymentSummary.Account__c;
penaltyBilling.AcctSeed__Date__c = Date.Today();
penaltyBilling.Payment_Summary__c = paymentSummary.Id;
insert penaltyBilling;
AcctSeed__Billing_Line__c penaltybl = new AcctSeed__Billing_Line__c();
penaltybl.AcctSeed__Billing__c = penaltyBilling.Id;
penaltybl.AcctSeed__Rate__c = penaltyAmount;
AcctSeed__Cash_Receipt__c penaltyCashReceipt = new AcctSeed__Cash_Receipt__c();
penaltyCashReceipt.AcctSeed__Account__c = paymentSummary.Account__c;
penaltyCashReceipt.AcctSeed__Amount__c = penaltyAmount;
penaltyCashReceipt.AcctSeed__Payment_Reference__c = '';
penaltyCashReceipt.AcctSeed__Receipt_Date__c = Date.Today();
penaltyCashReceipt.Payment_Summary__c = paymentSummary.Id;
insert penaltyCashReceipt;
AcctSeed__Billing_Cash_Receipt__c penaltybillingCashReceipt = New AcctSeed__Billing_Cash_Receipt__c();
penaltybillingCashReceipt.AcctSeed__Billing__c = penaltyBilling.Id;
penaltybillingCashReceipt.AcctSeed__Cash_Receipt__c = penaltyCashReceipt.Id;
penaltybillingCashReceipt.AcctSeed__Applied_Amount__c = penaltyCashReceipt.AcctSeed__Amount__c ;
insert billingCashReceipt;
}Editor is loading...
Leave a Comment