001 /*
002 * Copyright 2011 The Kuali Foundation.
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.kfs.module.ar.document.service.impl;
017
018 import java.math.BigDecimal;
019 import java.util.ArrayList;
020 import java.util.Collection;
021 import java.util.HashMap;
022 import java.util.List;
023 import java.util.Map;
024
025 import org.apache.commons.lang.StringUtils;
026 import org.kuali.kfs.module.ar.ArConstants;
027 import org.kuali.kfs.module.ar.businessobject.CustomerCreditMemoDetail;
028 import org.kuali.kfs.module.ar.businessobject.CustomerInvoiceDetail;
029 import org.kuali.kfs.module.ar.businessobject.CustomerInvoiceItemCode;
030 import org.kuali.kfs.module.ar.businessobject.OrganizationAccountingDefault;
031 import org.kuali.kfs.module.ar.businessobject.SystemInformation;
032 import org.kuali.kfs.module.ar.document.CustomerInvoiceDocument;
033 import org.kuali.kfs.module.ar.document.service.AccountsReceivableTaxService;
034 import org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService;
035 import org.kuali.kfs.module.ar.document.service.InvoicePaidAppliedService;
036 import org.kuali.kfs.sys.KFSPropertyConstants;
037 import org.kuali.kfs.sys.businessobject.ChartOrgHolder;
038 import org.kuali.kfs.sys.context.SpringContext;
039 import org.kuali.kfs.sys.service.FinancialSystemUserService;
040 import org.kuali.kfs.sys.service.TaxService;
041 import org.kuali.kfs.sys.service.UniversityDateService;
042 import org.kuali.rice.kns.service.BusinessObjectService;
043 import org.kuali.rice.kns.service.DateTimeService;
044 import org.kuali.rice.kns.service.ParameterService;
045 import org.kuali.rice.kns.util.GlobalVariables;
046 import org.kuali.rice.kns.util.KualiDecimal;
047 import org.kuali.rice.kns.util.ObjectUtils;
048 import org.kuali.rice.kns.util.spring.CacheNoCopy;
049 import org.springframework.transaction.annotation.Transactional;
050
051 @Transactional
052 public class CustomerInvoiceDetailServiceImpl implements CustomerInvoiceDetailService {
053
054 private DateTimeService dateTimeService;
055 private UniversityDateService universityDateService;
056 private BusinessObjectService businessObjectService;
057 private ParameterService parameterService;
058 private InvoicePaidAppliedService invoicePaidAppliedService;
059 private AccountsReceivableTaxService accountsReceivableTaxService;
060 private TaxService taxService;
061
062
063 /**
064 * @see org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService#getAddCustomerInvoiceDetail(java.lang.Integer,
065 * java.lang.String, java.lang.String)
066 */
067 public CustomerInvoiceDetail getCustomerInvoiceDetailFromOrganizationAccountingDefault(Integer universityFiscalYear, String chartOfAccountsCode, String organizationCode) {
068 CustomerInvoiceDetail customerInvoiceDetail = new CustomerInvoiceDetail();
069
070 Map<String, Object> criteria = new HashMap<String, Object>();
071 criteria.put("universityFiscalYear", universityFiscalYear);
072 criteria.put("chartOfAccountsCode", chartOfAccountsCode);
073 criteria.put("organizationCode", organizationCode);
074
075 OrganizationAccountingDefault organizationAccountingDefault = (OrganizationAccountingDefault) businessObjectService.findByPrimaryKey(OrganizationAccountingDefault.class, criteria);
076 if (ObjectUtils.isNotNull(organizationAccountingDefault)) {
077 customerInvoiceDetail.setChartOfAccountsCode(organizationAccountingDefault.getDefaultInvoiceChartOfAccountsCode());
078 customerInvoiceDetail.setAccountNumber(organizationAccountingDefault.getDefaultInvoiceAccountNumber());
079 customerInvoiceDetail.setSubAccountNumber(organizationAccountingDefault.getDefaultInvoiceSubAccountNumber());
080 customerInvoiceDetail.setFinancialObjectCode(organizationAccountingDefault.getDefaultInvoiceFinancialObjectCode());
081 customerInvoiceDetail.setFinancialSubObjectCode(organizationAccountingDefault.getDefaultInvoiceFinancialSubObjectCode());
082 customerInvoiceDetail.setProjectCode(organizationAccountingDefault.getDefaultInvoiceProjectCode());
083 customerInvoiceDetail.setOrganizationReferenceId(organizationAccountingDefault.getDefaultInvoiceOrganizationReferenceIdentifier());
084 }
085
086 customerInvoiceDetail.setInvoiceItemTaxAmount(new KualiDecimal(0.00));
087 customerInvoiceDetail.setInvoiceItemQuantity(new BigDecimal(1));
088 customerInvoiceDetail.setInvoiceItemUnitOfMeasureCode(ArConstants.CUSTOMER_INVOICE_DETAIL_UOM_DEFAULT);
089 // KULAR-448 customerInvoiceDetail.setInvoiceItemServiceDate(dateTimeService.getCurrentSqlDate());
090 customerInvoiceDetail.setTaxableIndicator(false);
091
092 return customerInvoiceDetail;
093 }
094
095 /**
096 * @see org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService#getAddLineCustomerInvoiceDetailForCurrentUserAndYear()
097 */
098 public CustomerInvoiceDetail getCustomerInvoiceDetailFromOrganizationAccountingDefaultForCurrentYear() {
099 Integer currentUniversityFiscalYear = universityDateService.getCurrentFiscalYear();
100 ChartOrgHolder currentUser = SpringContext.getBean(FinancialSystemUserService.class).getPrimaryOrganization(GlobalVariables.getUserSession().getPerson(), ArConstants.AR_NAMESPACE_CODE);
101 return getCustomerInvoiceDetailFromOrganizationAccountingDefault(currentUniversityFiscalYear, currentUser.getChartOfAccountsCode(), currentUser.getOrganizationCode());
102 }
103
104 /**
105 * @see org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService#getCustomerInvoiceDetailFromCustomerInvoiceItemCode(java.lang.String,
106 * java.lang.String, java.lang.String)
107 */
108 public CustomerInvoiceDetail getCustomerInvoiceDetailFromCustomerInvoiceItemCode(String invoiceItemCode, String chartOfAccountsCode, String organizationCode) {
109
110 Map<String, String> criteria = new HashMap<String, String>();
111 criteria.put("invoiceItemCode", invoiceItemCode);
112 criteria.put("chartOfAccountsCode", chartOfAccountsCode);
113 criteria.put("organizationCode", organizationCode);
114 CustomerInvoiceItemCode customerInvoiceItemCode = (CustomerInvoiceItemCode) businessObjectService.findByPrimaryKey(CustomerInvoiceItemCode.class, criteria);
115
116 CustomerInvoiceDetail customerInvoiceDetail = null;
117 if (ObjectUtils.isNotNull(customerInvoiceItemCode)) {
118
119 customerInvoiceDetail = new CustomerInvoiceDetail();
120 customerInvoiceDetail.setChartOfAccountsCode(customerInvoiceItemCode.getDefaultInvoiceChartOfAccountsCode());
121 customerInvoiceDetail.setAccountNumber(customerInvoiceItemCode.getDefaultInvoiceAccountNumber());
122 customerInvoiceDetail.setSubAccountNumber(customerInvoiceItemCode.getDefaultInvoiceSubAccountNumber());
123 customerInvoiceDetail.setFinancialObjectCode(customerInvoiceItemCode.getDefaultInvoiceFinancialObjectCode());
124 customerInvoiceDetail.setFinancialSubObjectCode(customerInvoiceItemCode.getDefaultInvoiceFinancialSubObjectCode());
125 customerInvoiceDetail.setProjectCode(customerInvoiceItemCode.getDefaultInvoiceProjectCode());
126
127 customerInvoiceDetail.setOrganizationReferenceId(customerInvoiceItemCode.getDefaultInvoiceOrganizationReferenceIdentifier());
128 customerInvoiceDetail.setInvoiceItemCode(customerInvoiceItemCode.getInvoiceItemCode());
129 customerInvoiceDetail.setInvoiceItemDescription(customerInvoiceItemCode.getInvoiceItemDescription());
130 customerInvoiceDetail.setInvoiceItemUnitPrice(customerInvoiceItemCode.getItemDefaultPrice());
131 customerInvoiceDetail.setInvoiceItemUnitOfMeasureCode(customerInvoiceItemCode.getDefaultUnitOfMeasureCode());
132 customerInvoiceDetail.setInvoiceItemQuantity(customerInvoiceItemCode.getItemDefaultQuantity());
133 customerInvoiceDetail.setTaxableIndicator(customerInvoiceItemCode.isTaxableIndicator());
134
135 // KULAR-448 customerInvoiceDetail.setInvoiceItemServiceDate(dateTimeService.getCurrentSqlDate());
136
137 // TODO set sales tax accordingly
138 customerInvoiceDetail.setInvoiceItemTaxAmount(new KualiDecimal(0.00));
139
140 // set amount = unit price * quantity
141 customerInvoiceDetail.updateAmountBasedOnQuantityAndUnitPrice();
142
143 }
144
145 return customerInvoiceDetail;
146 }
147
148 public List<String> getCustomerInvoiceDocumentNumbersByAccountNumber(String accountNumber) {
149
150 Map<String, String> fieldValues = new HashMap<String, String>();
151 fieldValues.put("accountNumber", accountNumber);
152
153 Collection<CustomerInvoiceDetail> customerInvoiceDetails = businessObjectService.findMatching(CustomerInvoiceDetail.class, fieldValues);
154 List<String> docNumbers = new ArrayList<String>();
155 for (CustomerInvoiceDetail detail : customerInvoiceDetails) {
156 docNumbers.add(detail.getDocumentNumber());
157 }
158
159 return docNumbers;
160 }
161
162 /**
163 * @see org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService#getCustomerInvoiceDetailFromCustomerInvoiceItemCodeForCurrentUser(java.lang.String)
164 */
165 public CustomerInvoiceDetail getCustomerInvoiceDetailFromCustomerInvoiceItemCodeForCurrentUser(String invoiceItemCode) {
166 ChartOrgHolder currentUser = SpringContext.getBean(FinancialSystemUserService.class).getPrimaryOrganization(GlobalVariables.getUserSession().getPerson(), ArConstants.AR_NAMESPACE_CODE);
167 return getCustomerInvoiceDetailFromCustomerInvoiceItemCode(invoiceItemCode, currentUser.getChartOfAccountsCode(), currentUser.getOrganizationCode());
168 }
169
170 /**
171 * @see org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService#getDiscountCustomerInvoiceDetail(org.kuali.kfs.module.ar.businessobject.CustomerInvoiceDetail,
172 * java.lang.Integer, java.lang.String, java.lang.String)
173 */
174 public CustomerInvoiceDetail getDiscountCustomerInvoiceDetail(CustomerInvoiceDetail customerInvoiceDetail, Integer universityFiscalYear, String chartOfAccountsCode, String organizationCode) {
175
176 CustomerInvoiceDetail discountCustomerInvoiceDetail = (CustomerInvoiceDetail) ObjectUtils.deepCopy(customerInvoiceDetail);
177 discountCustomerInvoiceDetail.setInvoiceItemUnitPriceToNegative();
178 discountCustomerInvoiceDetail.updateAmountBasedOnQuantityAndUnitPrice();
179 discountCustomerInvoiceDetail.setInvoiceItemDescription(ArConstants.DISCOUNT_PREFIX + StringUtils.trimToEmpty(customerInvoiceDetail.getInvoiceItemDescription()));
180
181 Map<String, Object> criteria = new HashMap<String, Object>();
182 criteria.put("universityFiscalYear", universityFiscalYear);
183 criteria.put("processingChartOfAccountCode", chartOfAccountsCode);
184 criteria.put("processingOrganizationCode", organizationCode);
185
186 SystemInformation systemInformation = (SystemInformation) businessObjectService.findByPrimaryKey(SystemInformation.class, criteria);
187 if (ObjectUtils.isNotNull(systemInformation)) {
188 discountCustomerInvoiceDetail.setFinancialObjectCode(systemInformation.getDiscountObjectCode());
189 }
190
191 return discountCustomerInvoiceDetail;
192 }
193
194 /**
195 * @see org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService#getDiscountCustomerInvoiceDetailForCurrentYear(org.kuali.kfs.module.ar.businessobject.CustomerInvoiceDetail)
196 */
197 public CustomerInvoiceDetail getDiscountCustomerInvoiceDetailForCurrentYear(CustomerInvoiceDetail customerInvoiceDetail, CustomerInvoiceDocument customerInvoiceDocument) {
198 Integer currentUniversityFiscalYear = universityDateService.getCurrentFiscalYear();
199 String processingChartOfAccountsCode = customerInvoiceDocument.getAccountsReceivableDocumentHeader().getProcessingChartOfAccountCode();
200 String processingOrganizationCode = customerInvoiceDocument.getAccountsReceivableDocumentHeader().getProcessingOrganizationCode();
201 return getDiscountCustomerInvoiceDetail(customerInvoiceDetail, currentUniversityFiscalYear, processingChartOfAccountsCode, processingOrganizationCode);
202 }
203
204
205 /**
206 * @see org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService#recalculateCustomerInvoiceDetail(org.kuali.kfs.module.ar.businessobject.CustomerInvoiceDetail)
207 */
208 public void recalculateCustomerInvoiceDetail(CustomerInvoiceDocument customerInvoiceDocument, CustomerInvoiceDetail customerInvoiceDetail) {
209
210 // make sure amounts are negative when they are supposed to be
211 if (!customerInvoiceDocument.isInvoiceReversal() && customerInvoiceDetail.isDiscountLine()) {
212 customerInvoiceDetail.setInvoiceItemUnitPriceToNegative();
213 }
214 else if (customerInvoiceDocument.isInvoiceReversal() && !customerInvoiceDetail.isDiscountLine()) {
215 customerInvoiceDetail.setInvoiceItemUnitPriceToNegative();
216 }
217 KualiDecimal pretaxAmount = customerInvoiceDetail.getInvoiceItemPreTaxAmount();
218
219
220 KualiDecimal taxAmount = KualiDecimal.ZERO;
221 if (accountsReceivableTaxService.isCustomerInvoiceDetailTaxable(customerInvoiceDocument, customerInvoiceDetail)) {
222
223 String postalCode = accountsReceivableTaxService.getPostalCodeForTaxation(customerInvoiceDocument);
224 taxAmount = taxService.getTotalSalesTaxAmount(dateTimeService.getCurrentSqlDate(), postalCode, pretaxAmount);
225 }
226
227 customerInvoiceDetail.setInvoiceItemTaxAmount(taxAmount);
228 customerInvoiceDetail.setAmount(taxAmount.add(pretaxAmount));
229 }
230
231 /**
232 * @see org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService#updateAccountsForCorrespondingDiscount(org.kuali.kfs.module.ar.businessobject.CustomerInvoiceDetail)
233 */
234 public void updateAccountsForCorrespondingDiscount(CustomerInvoiceDetail parent) {
235
236 CustomerInvoiceDetail discount = parent.getDiscountCustomerInvoiceDetail();
237 if (ObjectUtils.isNotNull(discount)) {
238 if (StringUtils.isNotEmpty(parent.getAccountNumber())) {
239 discount.setAccountNumber(parent.getAccountNumber());
240 }
241 if (StringUtils.isNotEmpty(parent.getSubAccountNumber())) {
242 discount.setSubAccountNumber(parent.getSubAccountNumber());
243 }
244 }
245 }
246
247
248 /**
249 * @see org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService#getCustomerInvoiceDetail(java.lang.String,
250 * java.lang.Integer)
251 */
252 @SuppressWarnings("unchecked")
253 public CustomerInvoiceDetail getCustomerInvoiceDetail(String documentNumber, Integer sequenceNumber) {
254 Map<String, String> criteria = new HashMap<String, String>();
255 criteria.put("documentNumber", documentNumber);
256 criteria.put("sequenceNumber", sequenceNumber.toString());
257
258 return (CustomerInvoiceDetail) businessObjectService.findByPrimaryKey(CustomerInvoiceDetail.class, criteria);
259 }
260
261 /**
262 * @see org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService#getCustomerInvoiceDetailsForInvoice(java.lang.String)
263 */
264 public Collection<CustomerInvoiceDetail> getCustomerInvoiceDetailsForInvoice(String customerInvoiceDocumentNumber) {
265 Map<String, String> criteria = new HashMap<String, String>();
266 criteria.put("documentNumber", customerInvoiceDocumentNumber);
267
268 return businessObjectService.findMatching(CustomerInvoiceDetail.class, criteria);
269 }
270
271 /**
272 * @see org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService#getCustomerInvoiceDetailsForInvoiceWithCaching(java.lang.String)
273 */
274 @CacheNoCopy
275 public Collection<CustomerInvoiceDetail> getCustomerInvoiceDetailsForInvoiceWithCaching(String customerInvoiceDocumentNumber) {
276 Map<String, String> criteria = new HashMap<String, String>();
277 criteria.put("documentNumber", customerInvoiceDocumentNumber);
278
279 return businessObjectService.findMatching(CustomerInvoiceDetail.class, criteria);
280 }
281
282 /**
283 * @see org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService#getCustomerInvoiceDetailsForInvoice(org.kuali.kfs.module.ar.document.CustomerInvoiceDocument)
284 */
285 public Collection<CustomerInvoiceDetail> getCustomerInvoiceDetailsForInvoice(CustomerInvoiceDocument customerInvoiceDocument) {
286 if (null == customerInvoiceDocument) {
287 return new ArrayList<CustomerInvoiceDetail>();
288 }
289 return getCustomerInvoiceDetailsForInvoice(customerInvoiceDocument.getDocumentNumber());
290 }
291
292
293 /**
294 * @see org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService#getFinancialObjectCode(org.kuali.kfs.module.ar.businessobject.CustomerCreditMemoDetail)
295 *
296 public String getFinancialObjectCode(CustomerCreditMemoDetail customerCreditMemoDetail) {
297 // this implementation directly returns the FinancialObjectCode contained in the ref obj
298 // customerInvoiceDetail in the customerCreditMemoDetail
299 return customerCreditMemoDetail.getCustomerInvoiceDetail().getFinancialObjectCode();
300 }
301 */
302
303 /**
304 * @see org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService#updateFinancialObjectCode(org.kuali.kfs.module.ar.businessobject.CustomerCreditMemoDetail)
305 *
306 public void updateFinancialObjectCode(CustomerCreditMemoDetail customerCreditMemoDetail) {
307 // this implementation directly returns without changing FinancialObjectCode contained in the ref obj customerInvoiceDetail
308 return;
309 }
310 */
311
312 /**
313 * @see org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService#updateAccountsReceivableObjectCode(org.kuali.kfs.module.ar.businessobject.CustomerInvoiceDetail)
314 */
315 public void updateAccountsReceivableObjectCode(CustomerInvoiceDetail customerInvoiceDetail) {
316 customerInvoiceDetail.setAccountsReceivableObjectCode(getAccountsReceivableObjectCodeBasedOnReceivableParameter(customerInvoiceDetail));
317 }
318
319 /**
320 * @see org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService#getAccountsReceivableObjectCodeBasedOnReceivableParameter(org.kuali.kfs.module.ar.businessobject.CustomerInvoiceDetail)
321 */
322 public String getAccountsReceivableObjectCodeBasedOnReceivableParameter(CustomerInvoiceDetail customerInvoiceDetail) {
323 String receivableOffsetOption = parameterService.getParameterValue(CustomerInvoiceDocument.class, ArConstants.GLPE_RECEIVABLE_OFFSET_GENERATION_METHOD);
324 String accountsReceivableObjectCode = null;
325 if (ArConstants.GLPE_RECEIVABLE_OFFSET_GENERATION_METHOD_CHART.equals(receivableOffsetOption)) {
326 if (StringUtils.isNotEmpty(customerInvoiceDetail.getChartOfAccountsCode())) {
327 customerInvoiceDetail.refreshReferenceObject(KFSPropertyConstants.CHART);
328 accountsReceivableObjectCode = customerInvoiceDetail.getChart().getFinAccountsReceivableObj().getFinancialObjectCode();
329 }
330 }
331 else if (ArConstants.GLPE_RECEIVABLE_OFFSET_GENERATION_METHOD_SUBFUND.equals(receivableOffsetOption)) {
332 if (StringUtils.isNotEmpty(customerInvoiceDetail.getAccountNumber())) {
333 customerInvoiceDetail.refreshReferenceObject(KFSPropertyConstants.ACCOUNT);
334 accountsReceivableObjectCode = SpringContext.getBean(ParameterService.class).getParameterValue(CustomerInvoiceDocument.class, ArConstants.GLPE_RECEIVABLE_OFFSET_OBJECT_CODE_BY_SUB_FUND, customerInvoiceDetail.getAccount().getSubFundGroupCode());
335 }
336 }
337 return accountsReceivableObjectCode;
338 }
339
340 /**
341 * @see org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService#prepareCustomerInvoiceDetailForAdd(org.kuali.kfs.module.ar.businessobject.CustomerInvoiceDetail,
342 * org.kuali.kfs.module.ar.document.CustomerInvoiceDocument)
343 */
344 public void prepareCustomerInvoiceDetailForAdd(CustomerInvoiceDetail customerInvoiceDetail, CustomerInvoiceDocument customerInvoiceDocument) {
345 recalculateCustomerInvoiceDetail(customerInvoiceDocument, customerInvoiceDetail);
346 updateAccountsReceivableObjectCode(customerInvoiceDetail);
347 }
348
349 /**
350 * @see org.kuali.kfs.module.ar.document.service.CustomerInvoiceDetailService#prepareCustomerInvoiceDetailForErrorCorrection(org.kuali.kfs.module.ar.businessobject.CustomerInvoiceDetail,org.kuali.kfs.module.ar.document.CustomerInvoiceDocument)
351 *
352 public void prepareCustomerInvoiceDetailForErrorCorrection(CustomerInvoiceDetail customerInvoiceDetail, CustomerInvoiceDocument customerInvoiceDocument) {
353 // negate unit price
354 customerInvoiceDetail.setInvoiceItemUnitPrice(customerInvoiceDetail.getInvoiceItemUnitPrice().negate());
355
356 //clear the old CustomerInvoiceDocument
357 customerInvoiceDetail.setCustomerInvoiceDocument(null);
358 }
359 */
360
361 public DateTimeService getDateTimeService() {
362 return dateTimeService;
363 }
364
365 public void setDateTimeService(DateTimeService dateTimeService) {
366 this.dateTimeService = dateTimeService;
367 }
368
369 public UniversityDateService getUniversityDateService() {
370 return universityDateService;
371 }
372
373 public void setUniversityDateService(UniversityDateService universityDateService) {
374 this.universityDateService = universityDateService;
375 }
376
377 public BusinessObjectService getBusinessObjectService() {
378 return businessObjectService;
379 }
380
381 public void setBusinessObjectService(BusinessObjectService businessObjectService) {
382 this.businessObjectService = businessObjectService;
383 }
384
385 public ParameterService getParameterService() {
386 return parameterService;
387 }
388
389 public void setParameterService(ParameterService parameterService) {
390 this.parameterService = parameterService;
391 }
392
393 /**
394 * @param invoicePaidAppliedService
395 */
396 public void setInvoicePaidAppliedService(InvoicePaidAppliedService invoicePaidAppliedService) {
397 this.invoicePaidAppliedService = invoicePaidAppliedService;
398 }
399
400
401 public InvoicePaidAppliedService getInvoicePaidAppliedService() {
402 return invoicePaidAppliedService;
403 }
404
405 public TaxService getTaxService() {
406 return taxService;
407 }
408
409 public void setTaxService(TaxService taxService) {
410 this.taxService = taxService;
411 }
412
413 public AccountsReceivableTaxService getAccountsReceivableTaxService() {
414 return accountsReceivableTaxService;
415 }
416
417 public void setAccountsReceivableTaxService(AccountsReceivableTaxService accountsReceivableTaxService) {
418 this.accountsReceivableTaxService = accountsReceivableTaxService;
419 }
420 }