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 }