Files
Chartwell/Books/Accounting/AccountsReceivable/AccountsReceivableAdjustments.txt
2026-04-08 12:47:30 -04:00

491 lines
22 KiB
Plaintext

RAG Knowledge Chunks for CMH.HFA.Accounting.AccountsReceivable.Adjustments
---
Title: InvoiceAdjustment Lambda - Invoice Adjustment Get/Post/Map
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: InvoiceAdjustment
• type: component
• domain: Invoice Adjustments
• system: Oracle
Content: Purpose: AWS Lambda for retrieving, creating, and mapping invoice adjustments in Oracle AR.
Processing Logic:
• Get(): Retrieves invoice adjustments by filter criteria via IInvoiceAdjustmentIntegration
• Post(): Creates new invoice adjustment in Oracle
• Map(): Filters adjustments list by ReceivablesTrxId, creates mapped adjustment with negated amount
Key Rules:
• Throws ArgumentNullException if request is null
• Map uses ordinal string comparison for ReceivablesTrxId matching
• Mapped adjustment: Amount negated (*-1), ApplyDate/GlDate set to today
• Sets OrgId, SetOfBooksId from AdjustmentConfiguration
Example Questions:
• How do I create an invoice adjustment in Oracle?
• Which Lambda maps earned premium invoice adjustments?
• How are invoice adjustment amounts negated?
---
Title: CreditMemoAdjustment Lambda - Credit Memo Adjustment Operations
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: CreditMemoAdjustment
• type: component
• domain: Credit Memo Adjustments
• system: Oracle
Content: Purpose: AWS Lambda for retrieving, creating, and mapping credit memo adjustments in Oracle AR.
Processing Logic:
• Get(): Retrieves credit memo adjustments by filter criteria
• Post(): Creates new credit memo adjustment in Oracle
• Map(): Filters adjustments by ReceivablesTrxId, creates mapped adjustment with negated amount
Key Rules:
• Throws ArgumentNullException if request is null
• Map uses ordinal string comparison for ReceivablesTrxId matching (trimmed)
• Mapped adjustment: Amount negated (*-1), ApplyDate/GlDate set to today
• TransactionAdjustmentType="LINE", AdjustmentType="M", CurrencyCode="USD"
Example Questions:
• How do I post a credit memo adjustment?
• Which Lambda handles credit memo adjustment mapping?
• What adjustment type is used for credit memos?
---
Title: WriteOffAdjustment Lambda - Write-Off Threshold Logic
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: WriteOffAdjustment
• type: component
• domain: Write-Off Adjustments
• system: Oracle
Content: Purpose: Creates write-off adjustments for credit memos and installments below threshold balance.
Processing Logic:
• Map1(): Maps credit memo to write-off adjustment if UnappliedBalance within threshold
• Map2(): Maps installment to write-off adjustment if single open installment within threshold
• Returns null if balance exceeds WriteOffBalanceThreshold (5.00) or is zero
Key Rules:
• WriteOffBalanceThreshold = 5m (decimal)
• TransactionAdjustmentType="LINE", AdjustmentType="M"
• Amount negated: Math.Abs(balance) * -1
• Map2 throws exception if multiple open installments found
Example Questions:
• What is the write-off balance threshold?
• How do I write off small credit memo balances?
• Which Lambda handles installment write-offs?
---
Title: Write-Off Balance Threshold Rule
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: WriteOffAdjustment
• type: rule
• domain: Write-Off Adjustments
• system: Oracle
Content: Purpose: Defines threshold for automatic write-off eligibility.
Threshold Value: 5.00 (decimal constant WriteOffBalanceThreshold)
Eligibility Criteria:
• Credit Memo: 0 < Math.Abs(UnappliedBalanceDecimal) <= 5.00
• Installment: 0 < Sum(InstallmentBalanceDue) <= 5.00
• Returns null if balance is zero or exceeds threshold
Additional Rules:
• Only "Open" status installments considered
• Only one open installment allowed for write-off
• Amount always negated in adjustment
Example Questions:
• What is the maximum write-off amount?
• When is a credit memo eligible for write-off?
• What balance triggers automatic write-off?
---
Title: ServiceFeeAdjustment Lambda - Service Fee Processing
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: ServiceFeeAdjustment
• type: component
• domain: Service Fee Adjustments
• system: Oracle
Content: Purpose: Processes and maps service fee adjustments for open installments.
Processing Logic:
• Pre(): Filters open installments with AmountAdjusted > 0, creates adjustment list
• Map(): Creates reinstatement service fee for earliest open installment within 30 days
• MapFee(): Creates fee adjustment for earliest open installment if no matching adjustment exists
• Value(): Returns sum of adjustment amounts from Pre()
Key Rules:
• Only "Open" status installments processed (case-insensitive)
• InstallmentBalanceDue > 0 and AmountAdjustedDecimal > 0 required
• Amount negated: AmountAdjustedDecimal * -1
• Earliest installment selected by InstallmentDueDate
Example Questions:
• How are service fee adjustments calculated?
• Which Lambda processes installment service fees?
• What conditions trigger service fee adjustments?
---
Title: Service Fee Adjustment Eligibility Rule
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: ServiceFeeAdjustment
• type: rule
• domain: Service Fee Adjustments
• system: Oracle
Content: Purpose: Defines criteria for service fee adjustment creation on installments.
Eligibility Criteria (all must be true):
• InstallmentBalanceDue > 0
• AmountAdjustedDecimal > 0
• InstallmentStatus = "Open" (case-insensitive)
• ReceivablesTrxId matches AdjustmentConfiguration.ReceivableTrxId
Timing Rule:
• InstallmentDueDate <= DateTime.Today.AddDays(30)
• Earliest open installment selected (OrderBy InstallmentDueDate)
Processing:
• Requires more than 1 installment
• Skips if matching adjustment already exists
Example Questions:
• When is a service fee adjustment applicable?
• What date range qualifies for service fee?
• How are eligible installments identified?
---
Title: AdjustmentConfigurationModel - Adjustment Configuration Structure
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: AdjustmentConfigurationModel
• type: concept
• domain: Adjustment Configuration
• system: Oracle
Content: Purpose: Configuration model defining Oracle adjustment transaction parameters.
Properties:
• Id (Guid): Unique identifier
• ReceivableTrxId (string): Oracle receivables transaction ID
• Name, Type: Configuration identifiers
• OrgId, SetOfBooksId: Oracle organizational identifiers
• IsActiveFlag (bool): Active status
• StartActiveDate, InactiveDate, EndActiveDate: Date range strings
Usage: Passed in mapping DTOs to provide Oracle-specific configuration values for adjustment creation.
Example Questions:
• What fields configure adjustment transactions?
• How are Oracle org parameters specified?
• What is ReceivableTrxId used for?
---
Title: GetAdjustmentDto - Base Adjustment Query DTO
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: GetAdjustmentDto
• type: concept
• domain: Adjustment Retrieval
• system: Oracle
Content: Purpose: Abstract base DTO for querying adjustments with common filter parameters.
Properties:
• AdjustmentNumber (string): Filter by adjustment number
• AdjustmentId (string): Filter by adjustment ID
Derived Classes:
• GetInvoiceAdjustmentDto: Adds InvoiceAdjustmentId property
• GetCreditMemoAdjustmentDto: Adds CreditMemoAdjustmentId property
Usage: Provides common query parameters inherited by specific adjustment type queries.
Example Questions:
• What parameters filter adjustment queries?
• How do I query adjustments by number?
• What is the base DTO for adjustment retrieval?
---
Title: MapInvoiceAdjustmentDto - Invoice Adjustment Mapping Input
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: MapInvoiceAdjustmentDto
• type: concept
• domain: Invoice Adjustments
• system: Oracle
Content: Purpose: Input DTO for mapping earned premium invoice adjustments from adjustment list.
Properties:
• Adjustments (IList<InvoiceAdjustmentModel>): List of adjustments to filter
• AdjustmentConfiguration (AdjustmentConfigurationModel): Oracle configuration parameters
Processing Context:
• Used by InvoiceAdjustment.Map() to find matching adjustment by ReceivableTrxId
• Returns mapped adjustment with negated amount and today's dates
Example Questions:
• What input is needed for invoice adjustment mapping?
• How are adjustments filtered for mapping?
• What DTO provides adjustment configuration?
---
Title: MapCreditMemoAdjustmentDto - Credit Memo Adjustment Mapping Input
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: MapCreditMemoAdjustmentDto
• type: concept
• domain: Credit Memo Adjustments
• system: Oracle
Content: Purpose: Input DTO for mapping earned premium credit memo adjustments from adjustment list.
Properties:
• Adjustments (IList<CreditMemoAdjustmentModel>): List of credit memo adjustments to filter
• AdjustmentConfiguration (AdjustmentConfigurationModel): Oracle configuration parameters
Processing Context:
• Used by CreditMemoAdjustment.Map() to find matching adjustment by ReceivableTrxId
• Returns mapped adjustment with negated amount and today's dates
Example Questions:
• What input is needed for credit memo adjustment mapping?
• How do I pass credit memo adjustments for mapping?
• What configuration is required for credit memo adjustments?
---
Title: MapCreditMemoWriteOffAdjustmentDto - Credit Memo Write-Off Input
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: MapCreditMemoWriteOffAdjustmentDto
• type: concept
• domain: Write-Off Adjustments
• system: Oracle
Content: Purpose: Input DTO for creating credit memo write-off adjustments.
Properties:
• CreditMemo (CreditMemo): Credit memo with UnappliedBalanceDecimal to write off
• AdjustmentConfiguration (AdjustmentConfigurationModel): Oracle configuration parameters
Processing Context:
• Used by WriteOffAdjustment.Map1() to create write-off for balances <= $5.00
• Returns null if balance exceeds threshold or is zero
Example Questions:
• What input creates credit memo write-off adjustments?
• How do I pass credit memo data for write-off?
• What DTO wraps credit memo and configuration?
---
Title: MapInstallmentWriteOffAdjustmentDto - Installment Write-Off Input
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: MapInstallmentWriteOffAdjustmentDto
• type: concept
• domain: Write-Off Adjustments
• system: Oracle
Content: Purpose: Input DTO for creating installment write-off adjustments.
Properties:
• Installments (IList<Installment>): List of installments to evaluate for write-off
• AdjustmentConfiguration (AdjustmentConfigurationModel): Oracle configuration parameters
Processing Context:
• Used by WriteOffAdjustment.Map2() to create write-off for single open installment
• Filters for "Open" status installments
• Returns null if multiple open installments or balance exceeds threshold
Example Questions:
• What input creates installment write-off adjustments?
• How do I pass installments for write-off processing?
• What DTO handles installment write-off mapping?
---
Title: PreProcessServiceFeeAdjustmentDto - Service Fee Pre-Processing Input
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: PreProcessServiceFeeAdjustmentDto
• type: concept
• domain: Service Fee Adjustments
• system: Oracle
Content: Purpose: Input DTO for pre-processing service fee adjustments on installments.
Properties:
• Installments (IList<Installment>): List of installments to process
• Adjustments (IList<InvoiceAdjustmentModel>): Existing adjustments
• AdjustmentConfiguration (AdjustmentConfigurationModel): Oracle configuration parameters
Processing Context:
• Used by ServiceFeeAdjustment.Pre() to create adjustments for open installments with service fees
• Matches installments to adjustments by PaymentScheduleId
• Filters for InstallmentBalanceDue > 0, AmountAdjustedDecimal > 0, Status="Open"
Example Questions:
• What input is needed for service fee pre-processing?
• How are installments and adjustments passed together?
• What DTO handles service fee adjustment creation?
---
Title: PreProcessReinstatementServiceFeeAdjustmentDto - Reinstatement Fee Input
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: PreProcessReinstatementServiceFeeAdjustmentDto
• type: concept
• domain: Service Fee Adjustments
• system: Oracle
Content: Purpose: Input DTO for creating reinstatement service fee adjustments.
Properties:
• Installments (IList<Installment>): List of installments to evaluate
• Invoice (OracleInvoice): Invoice containing InstallmentFee value
• AdjustmentConfiguration (AdjustmentConfigurationModel): Oracle configuration parameters
Processing Context:
• Used by ServiceFeeAdjustment.Map() for reinstatement scenarios
• Selects earliest open installment within 30 days of due date
• Uses Invoice.InstallmentFee as adjustment amount
Example Questions:
• What input creates reinstatement service fee adjustments?
• How is installment fee passed for reinstatement?
• What DTO handles reinstatement fee processing?
---
Title: MapServiceFeeAdjustmentDto - Service Fee Mapping Input
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: MapServiceFeeAdjustmentDto
• type: concept
• domain: Service Fee Adjustments
• system: Oracle
Content: Purpose: Input DTO for mapping service fee adjustments to invoices.
Properties:
• Installments (IList<Installment>): Installments for fee allocation
• Invoice (OracleInvoice): Invoice to apply fee adjustment
• Adjustments (IList<InvoiceAdjustmentModel>): Existing adjustments to check
• AdjustmentConfiguration (AdjustmentConfigurationModel): Oracle configuration
Processing Context:
• Used by ServiceFeeAdjustment.MapFee() to create fee adjustment if none exists
• Checks for matching ReceivableTrxId and PaymentScheduleId
• Creates adjustment only if earliest open installment within 30 days and no match found
Example Questions:
• What input maps service fee to invoice?
• How do I check for existing service fee adjustments?
• What DTO handles service fee invoice mapping?
---
Title: OracleInvoiceAdjustment Integration - Invoice Adjustment API
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: OracleInvoiceAdjustment
• type: component
• domain: Invoice Adjustments
• system: Oracle OIC
Content: Purpose: Oracle Integration Cloud (OIC) client for invoice adjustment operations.
Interface Methods:
• GetInvoiceAdjustmentsAsync(): Retrieves invoice adjustments by query parameters
• PostInvoiceAdjustmentAsync(): Posts new invoice adjustment to Oracle
Implementation:
• Inherits from OracleBaseAdjustment
• Delegates to base GetAdjustmentsAsync<T> and PostAdjustmentsAsync<T>
• Passes InvoiceAdjustmentId as customerTrxId parameter
Example Questions:
• How do I integrate with Oracle invoice adjustment API?
• Which integration retrieves invoice adjustments?
• What interface defines invoice adjustment operations?
---
Title: OracleCreditMemoAdjustment Integration - Credit Memo Adjustment API
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: OracleCreditMemoAdjustment
• type: component
• domain: Credit Memo Adjustments
• system: Oracle OIC
Content: Purpose: Oracle Integration Cloud (OIC) client for credit memo adjustment operations.
Interface Methods:
• GetCreditMemoAdjustmentsAsync(): Retrieves credit memo adjustments by query parameters
• PostCreditMemoAdjustmentAsync(): Posts new credit memo adjustment to Oracle
Implementation:
• Inherits from OracleBaseAdjustment
• Delegates to base GetAdjustmentsAsync<T> and PostAdjustmentsAsync<T>
• Passes CreditMemoAdjustmentId as customerTrxId parameter
Example Questions:
• How do I integrate with Oracle credit memo adjustment API?
• Which integration posts credit memo adjustments?
• What interface defines credit memo adjustment operations?
---
Title: OracleBaseAdjustment - Base Adjustment Integration
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: OracleBaseAdjustment
• type: component
• domain: Adjustments
• system: Oracle OIC
Content: Purpose: Abstract base class for Oracle adjustment API integrations.
Endpoint:
• AdjustmentEndpoint: "/ic/api/integration/v1/flows/rest/CHI_ADJUSTMENT_API/1.0/Adjustment"
Methods:
• GetAdjustmentsAsync<TOut>(): GET with query params (CustomerTrxId, AdjustmentId, AdjustmentNumber), returns ARAdjustments array from JSON
• PostAdjustmentsAsync<T>(): POST with JSON body, returns deserialized response
Key Rules:
• Allows HTTP 404 status on GET requests
• Extracts adjustments from JObject["ARAdjustments"]
• Returns empty list if null
Example Questions:
• What is the Oracle adjustment API endpoint?
• How are adjustment query parameters passed?
• Which base class handles adjustment API calls?
---
Title: Adjustment Mapping Amount Negation Rule
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: InvoiceAdjustment, CreditMemoAdjustment, WriteOffAdjustment, ServiceFeeAdjustment
• type: rule
• domain: Adjustments
• system: Oracle
Content: Purpose: Defines amount transformation rule for adjustment mapping across all adjustment types.
Negation Formula:
• Invoice/CreditMemo Earned Premium: (decimal.Parse(Amount) * -1).ToString()
• Write-Off Credit Memo: (Math.Abs(UnappliedBalanceDecimal) * -1).ToString()
• Write-Off Installment: (InstallmentBalanceDue * -1).ToString()
• Service Fee: (AmountAdjustedDecimal * -1).ToString()
Key Rule: All adjustment amounts are negated (*-1) during mapping to reverse original transaction amounts.
Example Questions:
• Why are adjustment amounts negated?
• How are adjustment amounts calculated?
• What transformation is applied to adjustment amounts?
---
Title: Adjustment Common Field Values
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: All Adjustment Lambdas
• type: rule
• domain: Adjustments
• system: Oracle
Content: Purpose: Defines standard field values consistently applied across all adjustment types.
Standard Values:
• TransactionAdjustmentType: "LINE"
• AdjustmentType: "M"
• CurrencyCode: "USD"
• ApplyDate: DateOnly.FromDateTime(DateTime.Today)
• GlDate: DateOnly.FromDateTime(DateTime.Today)
Configuration-Derived Values:
• OrgId: From AdjustmentConfiguration.OrgId
• SetOfBooksId: From AdjustmentConfiguration.SetOfBooksId
• ReceivablesTrxId: From AdjustmentConfiguration.ReceivableTrxId
Example Questions:
• What adjustment type code is used?
• What currency is used for adjustments?
• What GL date is set for adjustments?
---
Title: Adjustment Workflow - Earned Premium Reversal
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: InvoiceAdjustment, CreditMemoAdjustment
• type: workflow
• domain: Invoice/Credit Memo Adjustments
• system: Oracle
Content: Purpose: Describes workflow for reversing earned premium via invoice or credit memo adjustments.
Workflow Steps:
1. Retrieve existing adjustments list from Oracle
2. Filter adjustments: match ReceivablesTrxId (trimmed, ordinal comparison) to AdjustmentConfiguration.ReceivableTrxId
3. If match found, create new adjustment copying matched values
4. Negate amount: (decimal.Parse(match.Amount) * -1).ToString()
5. Set ApplyDate and GlDate to today
6. Set OrgId, SetOfBooksId from AdjustmentConfiguration
7. Post new adjustment to Oracle via integration
Example Questions:
• How are earned premium adjustments reversed?
• What workflow maps adjustment amounts?
• How is ReceivablesTrxId matched for adjustments?
---
Title: Service Fee Adjustment Workflow - Open Installment Processing
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: ServiceFeeAdjustment
• type: workflow
• domain: Service Fee Adjustments
• system: Oracle
Content: Purpose: Describes workflow for creating service fee adjustments on open installments.
Workflow Steps:
1. Match installments to adjustments by PaymentScheduleId (InstallmentId)
2. Filter for: InstallmentBalanceDue > 0, AmountAdjustedDecimal > 0, Status="Open", ReceivablesTrxId match
3. For each eligible installment, create InvoiceAdjustmentModel
4. Set Amount to (AmountAdjustedDecimal * -1)
5. Set CustomerTrxId from TransactionId
6. Set TransactionAdjustmentType="LINE", AdjustmentType="M"
7. Apply dates and configuration values
8. Return list of adjustments for posting
Example Questions:
• How are service fees matched to installments?
• What workflow creates service fee adjustments?
• How are installments filtered for service fee processing?
---
Title: Write-Off Adjustment Workflow - Threshold-Based Creation
Metadata:
• module: CMH.HFA.Accounting.AccountsReceivable.Adjustments
• component: WriteOffAdjustment
• type: workflow
• domain: Write-Off Adjustments
• system: Oracle
Content: Purpose: Describes workflow for creating write-off adjustments based on balance threshold.
Workflow Steps (Credit Memo):
1. Check UnappliedBalanceDecimal != 0 and Math.Abs(UnappliedBalanceDecimal) <= 5.00
2. If within threshold, create adjustment with negated absolute value
3. Otherwise return null
Workflow Steps (Installment):
1. Filter for InstallmentStatus="Open"
2. Check sum(InstallmentBalanceDue) > 0 and <= 5.00
3. Ensure exactly one open installment (throw exception if multiple)
4. Create adjustment with negated balance
5. Otherwise return null
Example Questions:
• How are write-offs created based on balance?
• What workflow checks write-off threshold?
• When is a write-off adjustment generated?
---
This completes the RAG knowledge chunks for the CMH.HFA.Accounting.AccountsReceivable.Adjustments module. Each chunk is atomic, non-overlapping, and optimized for retrieval-augmented generation systems with precise technical information.