Reorganize Book folder
This commit is contained in:
557
Books/Accounting/AccountsReceivable/AccountsReceivable.txt
Normal file
557
Books/Accounting/AccountsReceivable/AccountsReceivable.txt
Normal file
@@ -0,0 +1,557 @@
|
||||
RAG Knowledge Chunks for CMH.HFA.Accounting.AccountsReceivable
|
||||
---
|
||||
Title: CustomerCreateLambda - Oracle Customer Creation Component
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: CustomerCreateLambda
|
||||
• type: component
|
||||
• domain: Customer Management
|
||||
• system: Oracle
|
||||
Content: Purpose: AWS Lambda function that creates new customer records in Oracle via OracleCustomerIntegration.
|
||||
Processing Logic:
|
||||
• Accepts OracleCustomer object as input
|
||||
• Sets AccountSource to "HFA" for first account
|
||||
• Delegates to IOracleCustomerIntegration.CreateCustomer
|
||||
• Returns created OracleCustomer with Oracle-assigned IDs
|
||||
Key Rules:
|
||||
• AccountSource is always "HFA" for account creation
|
||||
• Lambda configuration: 256MB memory, 30s timeout
|
||||
Example Questions:
|
||||
• How do I create a new customer in Oracle?
|
||||
• What AccountSource is used for HFA customer creation?
|
||||
• Which component handles customer creation?
|
||||
---
|
||||
Title: CustomerGetLambda - Multi-Method Customer Retrieval
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: CustomerGetLambda
|
||||
• type: component
|
||||
• domain: Customer Management
|
||||
• system: Oracle
|
||||
Content: Purpose: AWS Lambda providing multiple methods to retrieve customer data from Oracle and account links from AccountsService.
|
||||
Processing Logic:
|
||||
• Get() method: Retrieves customer by AccountSourceReference, AccountNumber, or CustAccountId (priority order)
|
||||
• GetAccountWithLinks(): Retrieves iSeries account key linked to AccountSourceReference
|
||||
• GetAccountLinksByLinkedAccountNumber(): Retrieves accounts by linked account number and source
|
||||
• GetCustomerActivity(): Retrieves customer account activity summary by CustAccountId
|
||||
Key Rules:
|
||||
• Throws ArgumentNullException if all identifiers are null
|
||||
• Priority: AccountSourceReference > AccountNumber > CustAccountId
|
||||
Example Questions:
|
||||
• How do I retrieve a customer using policy number?
|
||||
• What identifiers can query Oracle customers?
|
||||
• How do I get iSeries account keys for Oracle customers?
|
||||
---
|
||||
Title: OracleCustomer DTO Structure
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: OracleCustomer
|
||||
• type: concept
|
||||
• domain: Customer Management
|
||||
• system: Oracle
|
||||
Content: Purpose: Data structure representing Oracle customer entity with party and account information.
|
||||
Properties:
|
||||
• Version, SourceSystem, PartyId
|
||||
• CustomerNumber (Oracle-assigned)
|
||||
• PartyType (Person/Organization)
|
||||
• FirstName, MiddleName, LastName, NameSuffix
|
||||
• PartySourceSystemReferenceId (external system reference)
|
||||
• Accounts[] (array of Account objects)
|
||||
Inheritance: Extends AuditableEntityBase for audit tracking
|
||||
Example Questions:
|
||||
• What fields define an Oracle customer?
|
||||
• How is customer name structured in Oracle?
|
||||
• What is PartySourceSystemReferenceId used for?
|
||||
---
|
||||
Title: Account DTO Structure
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: Account
|
||||
• type: concept
|
||||
• domain: Customer Management
|
||||
• system: Oracle
|
||||
Content: Purpose: Data structure representing Oracle customer account with source references and status.
|
||||
Properties:
|
||||
• CustAccountId (Oracle ID, mapped from "CustAccountId" JSON)
|
||||
• AccountNumber, AccountSource, AccountSourceReference
|
||||
• AccountDescription, AccountType, CustomerClass
|
||||
• AccountEstablishedDate, AccountTerminationDate (DateOnly)
|
||||
• AccountStatus, PartyId
|
||||
• Sites[] (array of Site objects)
|
||||
Inheritance: Extends AuditableEntityBase
|
||||
Example Questions:
|
||||
• What identifies an Oracle account record?
|
||||
• How are account source references structured?
|
||||
• What account metadata is tracked?
|
||||
---
|
||||
Title: AccountIdDto - Account Identifier Container
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: AccountIdDto
|
||||
• type: concept
|
||||
• domain: Customer Management
|
||||
• system: Multi-system
|
||||
Content: Purpose: Container for passing account identifiers between step functions and Lambda invocations.
|
||||
Properties:
|
||||
• AccountSourceReference (nullable string) - external system reference
|
||||
• AccountNumber (nullable string) - Oracle account number
|
||||
• CustAccountId (nullable string) - Oracle customer account ID
|
||||
Key Rules:
|
||||
• All fields optional, at least one required for customer lookups
|
||||
• Used as input parameter for CustomerGetLambda methods
|
||||
Example Questions:
|
||||
• How do I pass account identifiers to Lambda functions?
|
||||
• What account lookup keys are supported?
|
||||
• What DTO is used for step function account passing?
|
||||
---
|
||||
Title: PolicyInvoiceLambda - Invoice Get/Post Operations
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: PolicyInvoiceLambda
|
||||
• type: component
|
||||
• domain: Invoice Management
|
||||
• system: Oracle
|
||||
Content: Purpose: AWS Lambda for retrieving and posting invoices to Oracle via OIC (Oracle Integration Cloud).
|
||||
Processing Logic:
|
||||
• Get(): Retrieves invoice by InvoiceId OR by PolicyNumber+CustomerNumber combination
|
||||
• Post(): Creates new invoice in Oracle
|
||||
• Delegates all operations to IOracleInvoiceIntegration
|
||||
Key Rules:
|
||||
• Get requires either InvoiceId OR (PolicyNumber AND CustomerNumber)
|
||||
• Throws exception for invalid request combinations
|
||||
Example Questions:
|
||||
• How do I retrieve an invoice by policy number?
|
||||
• Which Lambda posts invoices to Oracle?
|
||||
• What are valid invoice lookup parameters?
|
||||
---
|
||||
Title: InvoicesGetLambda - Multi-Invoice Retrieval with Sorting
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: InvoicesGetLambda
|
||||
• type: component
|
||||
• domain: Invoice Management
|
||||
• system: Oracle
|
||||
Content: Purpose: Retrieves multiple invoices from Oracle with configurable sorting.
|
||||
Processing Logic:
|
||||
• Accepts GetInvoicesDto with filter and sort criteria
|
||||
• Delegates retrieval to IOracleInvoiceIntegration
|
||||
• Applies sorting based on OrderOptions.PropertyName and SortBy
|
||||
• Returns sorted List<OracleInvoice>
|
||||
Sortable Fields:
|
||||
• DocumentNumber (default), TransactionDate, DueDate, AccountingDate, TransactionNumber
|
||||
Key Rules:
|
||||
• Throws ArgumentException for unsupported sort fields
|
||||
• Supports Ascending/Descending order via SortByOption
|
||||
Example Questions:
|
||||
• How do I retrieve invoices sorted by due date?
|
||||
• What fields can invoices be sorted by?
|
||||
• Which Lambda handles bulk invoice retrieval?
|
||||
---
|
||||
Title: OracleInvoice DTO Structure
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: OracleInvoice
|
||||
• type: concept
|
||||
• domain: Invoice Management
|
||||
• system: Oracle
|
||||
Content: Purpose: Data structure representing an invoice in Oracle AR system.
|
||||
Key Properties:
|
||||
• TransactionID, TransactionNumber, DocumentNumber
|
||||
• TransactionClass (always "Invoice"), TransactionType
|
||||
• TransactionDate, AccountingDate, DueDate (date fields)
|
||||
• CustomerAccountNumber, SitePurposeSiteNumber
|
||||
• TransactionLines[] (list of Transactionline objects)
|
||||
• InvoiceBalanceAmount, TransactionStatus, PrintStatus
|
||||
Static Values:
|
||||
• BusinessUnit = "HFA BU"
|
||||
• TransactionSource = "HFA Agency Management System"
|
||||
• CurrencyCode = "USD"
|
||||
• LegalEntityID = "62-1764688"
|
||||
Computed Property:
|
||||
• PremiumAmount: Sum of transaction lines containing "premium" in description
|
||||
Example Questions:
|
||||
• What fields define an Oracle invoice?
|
||||
• What static values are set for HFA invoices?
|
||||
• How is premium amount calculated?
|
||||
---
|
||||
Title: InvoiceStatic Constants - Invoice Configuration Values
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: InvoiceStatic
|
||||
• type: rule
|
||||
• domain: Invoice Management
|
||||
• system: Oracle
|
||||
Content: Purpose: Centralized constant values for invoice processing configuration.
|
||||
Core Constants:
|
||||
• HfaLegalEntityID: "62-1764688"
|
||||
• HfaAgencyManagementSystem: "HFA Agency Management System"
|
||||
• USD: "USD", Invoice: "Invoice", Billing: "Billing"
|
||||
• GenerateBillNo: "No", BillTo: "BILL_TO"
|
||||
Business Groups:
|
||||
• HfaHmhPremium, HfaMhwHbppPremium, HfaMhwEscPremium
|
||||
Line Types:
|
||||
• Premium, Fees, NonRefundableFees, NonRefundableFeesWithCommission, SalesTax
|
||||
Coverage Codes:
|
||||
• CTX, EMPAT, FCPRS, HCFAS, IGA, LFPEA, MNFSR, POLFE, SURC
|
||||
Example Questions:
|
||||
• What is the HFA legal entity ID for invoices?
|
||||
• What business groups are supported?
|
||||
• What line types are available for invoices?
|
||||
---
|
||||
Title: HfaStatic Constants - HFA System-Wide Values
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: HfaStatic
|
||||
• type: rule
|
||||
• domain: System Configuration
|
||||
• system: HFA
|
||||
Content: Purpose: System-wide constant values used across HFA accounting modules.
|
||||
Constants:
|
||||
• Credit: "Credit", Debit: "Debit"
|
||||
• HFA: "HFA"
|
||||
• HfaAgencyManagementSystem: "HFA Agency Management System"
|
||||
• HfaBusinessUnit: "HFA BU"
|
||||
• HFASystems: "HFA SYSTEMS"
|
||||
• NewStatus: "New", RenewalStatus: "Renewal"
|
||||
• USD: "USD"
|
||||
Usage: Referenced throughout invoice, general ledger, and customer modules for consistent value assignment.
|
||||
Example Questions:
|
||||
• What is the HFA business unit identifier?
|
||||
• What currency code is used for HFA transactions?
|
||||
• What status values are used for new vs renewal transactions?
|
||||
---
|
||||
Title: GeneralLedgerStatic Constants - GL Configuration
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: GeneralLedgerStatic
|
||||
• type: rule
|
||||
• domain: General Ledger
|
||||
• system: Oracle GL
|
||||
Content: Purpose: Centralized constants for general ledger posting configuration.
|
||||
Core Constants:
|
||||
• LedgerName: "Clayton GAAP USD"
|
||||
• ActualFlag_A: "A", Version19: "V1.9"
|
||||
• ApplicaitonName: "CMH.HFA.Accounting.AccountsReceivable"
|
||||
• SourceServer: "AWS", Priority: 2, MaxWait: 3000
|
||||
Account Codes:
|
||||
• A198000, A200001, A200110, A201004, A450007, A450008
|
||||
Cost Centers: C0700, C999, C9999 Entities: E200, E400, E500, E501, E999 Product Lines: P001, P003, P004, P999 Location: L00000, Future: F99999
|
||||
Example Questions:
|
||||
• What ledger name is used for HFA general ledger?
|
||||
• What account codes are used for GL postings?
|
||||
• What is the GL version identifier?
|
||||
---
|
||||
Title: GeneralLedgerHelper - GL Posting and Event Publishing
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: GeneralLedgerHelper
|
||||
• type: component
|
||||
• domain: General Ledger
|
||||
• system: Integration Hub
|
||||
Content: Purpose: Posts general ledger entries to Integration Hub and publishes retail disbursement events.
|
||||
Processing Logic:
|
||||
• Post(): Submits GeneralLedgerModel to Integration Hub
|
||||
• GetRetailDisbursementEvent(): Maps PreGeneralLedger to CommissionDisbursementEvent for retail consumption
|
||||
Key Rules:
|
||||
• Returns success message with GL ID from first payload item
|
||||
• Event includes SubType, PolicyNumber, CommissionReference, amounts
|
||||
Example Questions:
|
||||
• How do I post general ledger entries?
|
||||
• Which component publishes retail disbursement events?
|
||||
• What is included in commission disbursement events?
|
||||
---
|
||||
Title: ApPaymentRequestHelper - AP Payment Processing
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: ApPaymentRequestHelper
|
||||
• type: component
|
||||
• domain: Accounts Payable
|
||||
• system: Integration Hub
|
||||
Content: Purpose: Posts AP payment requests to Integration Hub and maps account links to keys.
|
||||
Processing Logic:
|
||||
• Post(): Validates and submits ApPaymentRequestModel
|
||||
• MapAccountLinkToAccountKey(): Extracts iSeriesAccountKey from AccountLinks
|
||||
• MapAccountLinkToPolicyNo(): Extracts HfaPolicyNumber from AccountLinks
|
||||
Validation Rules:
|
||||
• ClaytonBusinessUnit, ApplicationName, SourceServer required
|
||||
• Payload must have at least one item
|
||||
• Invoice with InvoiceNumber and InvoiceLines required
|
||||
• InvoiceLine Amount must be > 0
|
||||
Example Questions:
|
||||
• How do I submit an AP payment request?
|
||||
• How do I map account links to iSeries account key?
|
||||
• What validations apply to AP payment requests?
|
||||
---
|
||||
Title: AccountLink Mapping Rules - iSeries and Policy Number Extraction
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: ApPaymentRequestHelper
|
||||
• type: rule
|
||||
• domain: Account Management
|
||||
• system: Multi-system
|
||||
Content: Purpose: Extract specific account keys from AccountLinks array based on AccountSource.
|
||||
Mapping Logic:
|
||||
• iSeriesAccountKey: Find AccountLink where AccountSource contains "iSeriesAccountKey" (case-insensitive substring match)
|
||||
• HfaPolicyNumber: Find AccountLink where AccountSource equals "HfaPolicyNumber" (case-insensitive exact match)
|
||||
Key Rules:
|
||||
• Throws InvalidOperationException if target AccountLink not found
|
||||
• Requires at least one AccountLink in AccountDto
|
||||
• Returns AccountNumber from matched AccountLink
|
||||
Example Questions:
|
||||
• How do I extract iSeries account key from account links?
|
||||
• What AccountSource identifies HFA policy numbers?
|
||||
• How are account links filtered?
|
||||
---
|
||||
Title: UnappliedCashReceiptNotifyLambda - Email Notification Workflow
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: UnappliedCashReceiptNotifyLambda
|
||||
• type: workflow
|
||||
• domain: Cash Receipts
|
||||
• system: Email/Mail Relay
|
||||
Content: Purpose: Notifies stakeholders about unapplied cash receipts via email with Excel attachment.
|
||||
Processing Flow:
|
||||
1. Filter receipts: UnappliedAmount > 0 AND ReceiptState = "Unapplied" (case-insensitive)
|
||||
2. Generate Excel report with receipt details (if receipts found)
|
||||
3. Send email via IMailRelayService with attachment
|
||||
4. Return execution result with email status
|
||||
Key Rules:
|
||||
• FromEmail: "noreply_hfa_accountsreceivable@claytonhomes.com"
|
||||
• Resilient: sends email without attachment if Excel generation fails
|
||||
• Returns success if no unapplied receipts (nothing to notify)
|
||||
Example Questions:
|
||||
• How are unapplied receipts identified?
|
||||
• Which Lambda sends unapplied receipt notifications?
|
||||
• What happens if no unapplied receipts are found?
|
||||
---
|
||||
Title: ReceiptStatic Constants - Receipt Configuration
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: ReceiptStatic
|
||||
• type: rule
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle AR
|
||||
Content: Purpose: Constant values for receipt processing and status identification.
|
||||
Constants:
|
||||
• ReceiptMethodIcVmf: "HFA I/C VMF"
|
||||
• Unapplied: "Unapplied"
|
||||
• Remitted: "Remitted"
|
||||
Usage: Used to identify receipt states and methods throughout receipt processing workflows.
|
||||
Example Questions:
|
||||
• What receipt method identifier is used for VMF?
|
||||
• What value indicates an unapplied receipt?
|
||||
• What are valid receipt status values?
|
||||
---
|
||||
Title: OracleIntegrationBase - Authentication and Request Building
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: OracleIntegrationBase
|
||||
• type: component
|
||||
• domain: Integration
|
||||
• system: Oracle OIC
|
||||
Content: Purpose: Base class for Oracle Integration Cloud (OIC) integrations providing authentication and request configuration.
|
||||
Processing Logic:
|
||||
• OracleBaseUrl(): Constructs base URL using environment-specific OIC subdomain
|
||||
• GetRequestAsync(): Creates authenticated Flurl request with basic auth credentials
|
||||
• GetRequestForJsonContent(): Adds "Content-Type: application/json" header
|
||||
Secret Management:
|
||||
• Retrieves credentials from secrets: {environment}-hfa-oic-username, {environment}-hfa-oic-password
|
||||
• Retrieves OIC environment from: {environment}-hfa-oic-environment
|
||||
URL Pattern: https://erp-{oicEnv}-oicintegration-idq4hj6bgo2f-ia.integration.ocp.oraclecloud.com
|
||||
Example Questions:
|
||||
• How do Oracle integrations authenticate?
|
||||
• What is the OIC base URL structure?
|
||||
• How are OIC credentials retrieved?
|
||||
---
|
||||
Title: OracleEndpoints - OIC API Endpoint Definitions
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: OracleEndpoints
|
||||
• type: rule
|
||||
• domain: Integration
|
||||
• system: Oracle OIC
|
||||
Content: Purpose: Centralized definitions of Oracle Integration Cloud REST API endpoints.
|
||||
Endpoint Definitions:
|
||||
• LookupEndpoint: /ic/api/integration/v1/flows/rest/CHI_LOOKUP_API/1.0/lookup?LookupType=CHI_HFA_LOOKUPS
|
||||
• InvoiceEndpoint: /ic/api/integration/v1/flows/rest/CHI_ARINVOICE_AP/1.0/invoice
|
||||
• CustomerEndpoint: /ic/api/integration/v1/flows/rest/CHI_CUSTOMER_API/1.0/Customer
|
||||
• InstallmentEndpoint: /ic/api/integration/v1/flows/rest/CHI_INSTALLMEN_API/1.0/installment
|
||||
• PostApplyReceiptToInvoiceEndpoint: /ic/api/integration/v1/flows/rest/CHI_RECEIPTAPP_API/1.0/ReceiptApplication
|
||||
• CustomerAccountActivitySummaryEndpoint: /ic/api/integration/v1/flows/rest/CHI_ARCUSTOMER_API/1.0/ARCustomerAccountActivities
|
||||
Example Questions:
|
||||
• What is the endpoint for posting invoices to Oracle?
|
||||
• Which endpoint retrieves customer account activity?
|
||||
• What are the OIC flow names for HFA integrations?
|
||||
---
|
||||
Title: DecrementPolicyNumberLambda - Policy Number Decrement Logic
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: DecrementPolicyNumberLambda
|
||||
• type: component
|
||||
• domain: Policy Management
|
||||
• system: HFA
|
||||
Content: Purpose: Decrements the last two digits of a policy number using modulo arithmetic.
|
||||
Processing Logic:
|
||||
• Extract prefix (all characters except last 2)
|
||||
• Extract numeral part (last 2 characters)
|
||||
• Parse numeral as integer
|
||||
• Decrement: (numeral - 1 + 100) % 100
|
||||
• Return: prefix + decremented numeral (zero-padded to 2 digits)
|
||||
Validation:
|
||||
• Policy number must be at least 2 characters
|
||||
• Last 2 characters must be numeric
|
||||
Example Questions:
|
||||
• How do I decrement a policy number?
|
||||
• What format is required for policy numbers?
|
||||
• How are policy number suffixes handled?
|
||||
---
|
||||
Title: StringExtension - Pre-Value Padding Helper
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: StringExtension
|
||||
• type: rule
|
||||
• domain: String Manipulation
|
||||
• system: N/A
|
||||
Content: Purpose: Extension method to pad strings with leading characters to reach target length.
|
||||
Method Signature:
|
||||
• AddPreValuePadding(this string value, int totalCharLimit, char paddingChar = '0')
|
||||
Processing Logic:
|
||||
• If value is null, treat as empty string
|
||||
• If value.Length > totalCharLimit, return unchanged
|
||||
• Calculate padding: totalCharLimit - value.Length
|
||||
• Return: new string(paddingChar, padding) + value
|
||||
Default Behavior: Pads with '0' characters
|
||||
Example Questions:
|
||||
• How do I left-pad a string with zeros?
|
||||
• What happens if string exceeds character limit?
|
||||
• How do I pad transaction numbers to fixed length?
|
||||
---
|
||||
Title: RetailGeneralLedger - Retail GL Mapping Component
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: RetailGeneralLedger
|
||||
• type: component
|
||||
• domain: General Ledger
|
||||
• system: Retail
|
||||
Content: Purpose: Maps retail general ledger DTOs to GeneralLedgerModel for debit and credit entries.
|
||||
Processing Logic:
|
||||
• MapDebit(): Maps debit retail commission to GL lines
|
||||
• MapCredit(): Maps credit retail commission to GL lines
|
||||
• Both methods delegate line generation to IRetailCommissionMapHelper
|
||||
• Sets shared properties: JournalSource, JournalCategory, LedgerName, batch/journal names
|
||||
Key Rules:
|
||||
• JournalSource = JournalCategory = RetailStatic.JournalSource
|
||||
• LedgerName = "Clayton GAAP USD"
|
||||
• BusinessCategory = "Retail"
|
||||
• ClaytonBusinessUnit = "Retail"
|
||||
Example Questions:
|
||||
• How do I map retail commissions to general ledger?
|
||||
• Which component handles retail GL entries?
|
||||
• What journal source is used for retail transactions?
|
||||
---
|
||||
Title: Retail GL Journal Entry Naming Convention
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: RetailGeneralLedger
|
||||
• type: rule
|
||||
• domain: General Ledger
|
||||
• system: Retail
|
||||
Content: Purpose: Defines naming conventions for retail GL batch and journal entries.
|
||||
BatchName Format:
|
||||
• Pattern: "INS {TransactionDate} {PolicyNumber} {TransactionNumber}"
|
||||
• TransactionDate format: "yyyy-MM-dd"
|
||||
JournalEntryName Format:
|
||||
• Total length: exactly 12 characters
|
||||
• Pattern: "INS" + zero-padding + TransactionNumber
|
||||
• Padding calculation: 12 - TransactionNumber.Length - 3
|
||||
• Example: "INS000012345" for transaction number 12345
|
||||
Example Questions:
|
||||
• What format is used for retail GL batch names?
|
||||
• How are journal entry names constructed?
|
||||
• What is the fixed length for journal entry names?
|
||||
---
|
||||
Title: LicensingLambda - Home Center License Validation
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: LicensingLambda
|
||||
• type: component
|
||||
• domain: Licensing
|
||||
• system: Licensing API
|
||||
Content: Purpose: Validates if a home center is licensed in a specific state via Licensing API integration.
|
||||
Processing Logic:
|
||||
• Accepts LicenseInfo with MasterDealerNumber and StateCode
|
||||
• Skips validation if MasterDealerNumber <= 0
|
||||
• Calls ILicensingApiIntegration.GetLicenseInfo with today's date
|
||||
• Sets IsHomeCenterLicensed = true if any license matches StateCode
|
||||
• Returns updated LicenseInfo
|
||||
Key Rules:
|
||||
• Only processes when MasterDealerNumber > 0
|
||||
• Validates against current date (DateOnly.FromDateTime(DateTime.Today))
|
||||
Example Questions:
|
||||
• How do I check if a home center is licensed?
|
||||
• Which Lambda validates dealer licensing?
|
||||
• What determines if a home center is licensed in a state?
|
||||
---
|
||||
Title: PolicyRefundDisbursementLambda - Refund Event Publishing
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: PolicyRefundDisbursementLambda
|
||||
• type: component
|
||||
• domain: Refunds
|
||||
• system: Event Publishing
|
||||
Content: Purpose: Publishes policy refund disbursement events to accounting service event bus.
|
||||
Processing Logic:
|
||||
• PublishCheck(): Publishes event with EventSubType = "Check"
|
||||
• PublishTransfer(): Publishes event with EventSubType = "Transfer"
|
||||
• Both methods wrap PolicyRefundDisbursementPayload in EventMessage
|
||||
• Delegates publishing to IAccountingServiceIntegration
|
||||
Event Properties:
|
||||
• EventType: "PolicyRefundDisbursement"
|
||||
• Source: "Aws.Accounting.AccountsReceivable"
|
||||
• Reporter: "AccountsReceivable.Event.PolicyRefundDisbursementLambda"
|
||||
• EventVersion: "v1", EventClass: EventClass.Detail
|
||||
Example Questions:
|
||||
• How do I publish a policy refund event?
|
||||
• What event types are available for refund disbursements?
|
||||
• Which component publishes refund check events?
|
||||
---
|
||||
Title: Unapplied Receipt Filtering Rule
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: UnappliedCashReceiptNotifyLambda
|
||||
• type: rule
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle AR
|
||||
Content: Purpose: Defines criteria for identifying unapplied cash receipts requiring notification.
|
||||
Filter Criteria (both conditions must be true):
|
||||
• UnappliedAmount > 0 (decimal comparison)
|
||||
• ReceiptState equals "Unapplied" (case-insensitive string comparison)
|
||||
Processing:
|
||||
• Applied using LINQ Where clause on IEnumerable<OracleReceipt>
|
||||
• Result used to trigger email notification workflow
|
||||
• Empty result skips notification
|
||||
Example Questions:
|
||||
• What conditions identify an unapplied receipt?
|
||||
• How are unapplied receipts filtered from receipt lists?
|
||||
• What ReceiptState value triggers notifications?
|
||||
---
|
||||
Title: Journal Entry Description Mapping by Line Context
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable
|
||||
• component: RetailGeneralLedger
|
||||
• type: rule
|
||||
• domain: General Ledger
|
||||
• system: Retail
|
||||
Content: Purpose: Maps business group line context to appropriate journal entry descriptions.
|
||||
Mapping Rules:
|
||||
• HfaHmhPremium → "InsPolicyTransaction" (from JournalEntryLineDescription)
|
||||
• HfaMhwHbppPremium → "HbpPolicies"
|
||||
• HfaMhwEscPremium → "HbpPolicies"
|
||||
• Default: "HbpPolicies"
|
||||
Processing: Uses case-insensitive StringComparison.OrdinalIgnoreCase for matching.
|
||||
Example Questions:
|
||||
• What journal description is used for HMH premium?
|
||||
• How are journal entry descriptions determined?
|
||||
• What description applies to HBPP premium transactions?
|
||||
---
|
||||
This completes the RAG knowledge chunks for the CMH.HFA.Accounting.AccountsReceivable module. Each chunk is atomic, focuses on a single concept, and provides query-ready information optimized for retrieval-augmented generation systems.
|
||||
@@ -0,0 +1,490 @@
|
||||
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.
|
||||
@@ -0,0 +1,241 @@
|
||||
RAG Knowledge Chunks for CMH.HFA.Accounting.AccountsReceivable.CashReceiptApplications
|
||||
---
|
||||
Title: RcptAppLambda - Cash Receipt Application Lambda
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceiptApplications
|
||||
• component: RcptAppLambda
|
||||
• type: component
|
||||
• domain: Cash Receipt Applications
|
||||
• system: Oracle
|
||||
Content: Purpose: AWS Lambda for posting cash receipt applications to Oracle and preprocessing receipt-to-installment applications.
|
||||
Processing Logic:
|
||||
• Post(): Posts single OracleReceiptApplication to Oracle via integration
|
||||
• Pre(): Generates receipt applications by matching unapplied receipts to open installments
|
||||
Key Rules:
|
||||
• Lambda configuration: 256MB memory, 30s timeout
|
||||
• Pre() method name truncated due to 127-character Lambda naming limit
|
||||
• Returns empty list if no unapplied receipts or installments
|
||||
Example Questions:
|
||||
• How do I post a cash receipt application to Oracle?
|
||||
• Which Lambda applies receipts to installments?
|
||||
• What component preprocesses receipt applications?
|
||||
---
|
||||
Title: Cash Receipt Application Preprocessing Workflow
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceiptApplications
|
||||
• component: RcptAppLambda
|
||||
• type: workflow
|
||||
• domain: Cash Receipt Applications
|
||||
• system: Oracle
|
||||
Content: Purpose: Automated workflow for applying unapplied cash receipts to open installments using greedy allocation.
|
||||
Workflow Steps:
|
||||
1. Filter receipts: UnappliedAmount > 0 AND ReceiptState = "Unapplied" (case-insensitive)
|
||||
2. Filter installments: InstallmentBalanceDue > 0
|
||||
3. Sort installments by InstallmentSequence (ascending)
|
||||
4. For each unapplied receipt, iterate through sorted installments
|
||||
5. Apply Math.Min(UnappliedAmount, InstallmentBalanceDue) to each installment
|
||||
6. Decrement both UnappliedAmount and InstallmentBalanceDue
|
||||
7. Create OracleReceiptApplication for each allocation
|
||||
8. Stop when receipt fully applied or all installments paid
|
||||
Example Questions:
|
||||
• How are receipts automatically applied to installments?
|
||||
• What algorithm allocates receipts to installments?
|
||||
• In what order are installments paid?
|
||||
---
|
||||
Title: Receipt Application Allocation Algorithm
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceiptApplications
|
||||
• component: RcptAppLambda
|
||||
• type: rule
|
||||
• domain: Cash Receipt Applications
|
||||
• system: Oracle
|
||||
Content: Purpose: Greedy allocation algorithm for applying cash receipts to installments in sequence order.
|
||||
Algorithm Logic:
|
||||
• AmountApplied = Math.Min(UnappliedAmount, InstallmentBalanceDue)
|
||||
• Installments processed in InstallmentSequence order (ascending)
|
||||
• Nested loop: outer (receipts), inner (installments)
|
||||
• Breaks inner loop when receipt UnappliedAmount = 0
|
||||
• Breaks outer loop when sum(InstallmentBalanceDue) = 0
|
||||
Mutation:
|
||||
• UnappliedAmount and InstallmentBalanceDue decremented in-place during processing
|
||||
Key Rule: Earliest installments paid first until receipt exhausted or all installments satisfied.
|
||||
Example Questions:
|
||||
• How is application amount calculated?
|
||||
• What order are installments processed?
|
||||
• When does receipt application stop?
|
||||
---
|
||||
Title: OracleReceiptApplication DTO Structure
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceiptApplications
|
||||
• component: OracleReceiptApplication
|
||||
• type: concept
|
||||
• domain: Cash Receipt Applications
|
||||
• system: Oracle
|
||||
Content: Purpose: Data structure representing a cash receipt application to an invoice installment.
|
||||
Key Properties:
|
||||
• ActionType (string): Application action (e.g., "Apply")
|
||||
• AmountApplied (decimal): Amount applied to transaction
|
||||
• ReceiptId (string): Oracle receipt identifier
|
||||
• CustomerTrxId (string): Invoice transaction ID
|
||||
• Instalment (string): Installment sequence number
|
||||
• InstalmentId (string): Installment identifier
|
||||
• ApplicationDate, AccountingDate (DateOnly): Application and GL dates
|
||||
• Comments (string): Application notes
|
||||
• ReceiptDate (DateOnly?), Currency (string), BusinessUnit (string)
|
||||
• ReversalGlDate (DateOnly?), ApplicationId (string)
|
||||
Example Questions:
|
||||
• What fields define a receipt application?
|
||||
• How is installment identified in receipt application?
|
||||
• What dates are required for receipt application?
|
||||
---
|
||||
Title: PreProcessReceiptApplicaitonsDto - Receipt Application Input
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceiptApplications
|
||||
• component: PreProcessReceiptApplicaitonsDto
|
||||
• type: concept
|
||||
• domain: Cash Receipt Applications
|
||||
• system: Oracle
|
||||
Content: Purpose: Input DTO for preprocessing cash receipt applications containing receipts and installments to match.
|
||||
Properties:
|
||||
• CashReceipts (IEnumerable<OracleReceipt>): Collection of cash receipts with UnappliedAmount
|
||||
• Installments (IEnumerable<Installment>): Collection of installments with InstallmentBalanceDue
|
||||
Processing Context:
|
||||
• Used by RcptAppLambda.Pre() to generate receipt applications
|
||||
• Receipts filtered for Unapplied state
|
||||
• Installments filtered for open balances and sorted by sequence
|
||||
Example Questions:
|
||||
• What input is needed for receipt application preprocessing?
|
||||
• How do I pass receipts and installments together?
|
||||
• What DTO handles receipt-to-installment matching?
|
||||
---
|
||||
Title: CashReceiptApplicationOicIntegration - Receipt Application API Client
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceiptApplications
|
||||
• component: CashReceiptApplicationOicIntegration
|
||||
• type: component
|
||||
• domain: Cash Receipt Applications
|
||||
• system: Oracle OIC
|
||||
Content: Purpose: Oracle Integration Cloud (OIC) client for posting cash receipt applications.
|
||||
Endpoint:
|
||||
• CashReceiptApplicationEndpoint: "/ic/api/integration/v1/flows/rest/CHI_RECEIPTAPP_API/1.0/ReceiptApplication?"
|
||||
Processing Logic:
|
||||
• PostCashReceiptApplicationAsync(): Serializes OracleReceiptApplication to JSON, POSTs to Oracle, deserializes response
|
||||
• Inherits from OracleIntegrationBase for authentication
|
||||
• Sets "Content-Type: application/json" header
|
||||
Example Questions:
|
||||
• What is the Oracle receipt application endpoint?
|
||||
• How do I integrate with Oracle receipt application API?
|
||||
• Which integration posts receipt applications?
|
||||
---
|
||||
Title: Unapplied Receipt Filtering Rule
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceiptApplications
|
||||
• component: RcptAppLambda
|
||||
• type: rule
|
||||
• domain: Cash Receipt Applications
|
||||
• system: Oracle
|
||||
Content: Purpose: Defines criteria for identifying receipts eligible for automatic application.
|
||||
Filter Criteria (both conditions must be true):
|
||||
• UnappliedAmount > 0 (decimal comparison)
|
||||
• ReceiptState equals "Unapplied" (case-insensitive, StringComparison.OrdinalIgnoreCase)
|
||||
Processing:
|
||||
• Applied using LINQ Where clauses on IEnumerable<OracleReceipt>
|
||||
• Results used for automated application to installments
|
||||
• Returns empty list if no matches found
|
||||
Example Questions:
|
||||
• What receipts qualify for automatic application?
|
||||
• How are unapplied receipts identified?
|
||||
• What conditions filter receipts for application?
|
||||
---
|
||||
Title: Open Installment Filtering and Sorting Rule
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceiptApplications
|
||||
• component: RcptAppLambda
|
||||
• type: rule
|
||||
• domain: Cash Receipt Applications
|
||||
• system: Oracle
|
||||
Content: Purpose: Defines filtering and ordering criteria for installments eligible for receipt application.
|
||||
Filter Criteria:
|
||||
• InstallmentBalanceDue > 0 (only installments with outstanding balance)
|
||||
Sort Order:
|
||||
• OrderBy InstallmentSequence (ascending)
|
||||
• Earliest installments processed first
|
||||
Processing:
|
||||
• Applied using LINQ Where and OrderBy on IEnumerable<Installment>
|
||||
• Sorted list ensures sequential payment application
|
||||
• Returns empty list if no installments with balance
|
||||
Example Questions:
|
||||
• How are installments sorted for receipt application?
|
||||
• What installments are eligible for payment?
|
||||
• In what sequence are installments paid?
|
||||
---
|
||||
Title: Receipt Application Standard Field Values
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceiptApplications
|
||||
• component: RcptAppLambda
|
||||
• type: rule
|
||||
• domain: Cash Receipt Applications
|
||||
• system: Oracle
|
||||
Content: Purpose: Defines standard field values for automatically generated receipt applications.
|
||||
Standard Values (Pre method):
|
||||
• ActionType: "Apply"
|
||||
• Comments: "" (empty string)
|
||||
• ApplicationDate: DateOnly.FromDateTime(DateTime.Now)
|
||||
• AccountingDate: DateOnly.FromDateTime(DateTime.Now)
|
||||
Dynamic Values:
|
||||
• AmountApplied: Math.Min(UnappliedAmount, InstallmentBalanceDue)
|
||||
• ReceiptId: unappliedReceipt.ReceiptId.ToString()
|
||||
• CustomerTrxId: installment.TransactionId.ToString()
|
||||
• Instalment: installment.InstallmentSequence.ToString()
|
||||
Example Questions:
|
||||
• What ActionType is used for receipt applications?
|
||||
• What date is set for application and accounting?
|
||||
• How are receipt and transaction IDs set?
|
||||
---
|
||||
Title: Receipt Application Loop Termination Conditions
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceiptApplications
|
||||
• component: RcptAppLambda
|
||||
• type: rule
|
||||
• domain: Cash Receipt Applications
|
||||
• system: Oracle
|
||||
Content: Purpose: Defines conditions that terminate receipt application processing loops.
|
||||
Inner Loop Break (per receipt):
|
||||
• Condition: unappliedReceipt.UnappliedAmount == 0
|
||||
• Stops processing installments when current receipt fully applied
|
||||
Outer Loop Break (all receipts):
|
||||
• Condition: sortedInstallments.Sum(x => x.InstallmentBalanceDue) == 0
|
||||
• Stops processing receipts when all installments fully paid
|
||||
Processing:
|
||||
• Inner loop breaks before moving to next receipt
|
||||
• Outer loop breaks to avoid processing remaining receipts
|
||||
• Optimizes processing by stopping when no work remains
|
||||
Example Questions:
|
||||
• When does receipt application processing stop?
|
||||
• What conditions break application loops?
|
||||
• How is early termination handled?
|
||||
---
|
||||
Title: Receipt-to-Installment Matching Strategy
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceiptApplications
|
||||
• component: RcptAppLambda
|
||||
• type: workflow
|
||||
• domain: Cash Receipt Applications
|
||||
• system: Oracle
|
||||
Content: Purpose: Strategy for matching multiple receipts to multiple installments using nested iteration.
|
||||
Matching Strategy:
|
||||
• Outer loop: Iterate through unapplied receipts (unordered)
|
||||
• Inner loop: Iterate through installments (ordered by sequence)
|
||||
• While loop: Apply portions until receipt or installment exhausted
|
||||
• Creates one OracleReceiptApplication per partial/full application
|
||||
Allocation Behavior:
|
||||
• Receipts applied to earliest installments first
|
||||
• Single receipt can pay multiple installments
|
||||
• Single installment can receive payments from multiple receipts
|
||||
• Tracks remaining balances in-place during processing
|
||||
Example Questions:
|
||||
• How are multiple receipts matched to installments?
|
||||
• Can one receipt pay multiple installments?
|
||||
• What strategy allocates payments across installments?
|
||||
---
|
||||
This completes the RAG knowledge chunks for the CMH.HFA.Accounting.AccountsReceivable.CashReceiptApplications module. Each chunk is atomic, non-overlapping, and optimized for retrieval-augmented generation with precise technical details about receipt application processing.
|
||||
@@ -0,0 +1,402 @@
|
||||
RAG Knowledge Chunks for CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
---
|
||||
Title: CashReceiptLambda - Cash Receipt CRUD Operations
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: CashReceiptLambda
|
||||
• type: component
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle
|
||||
Content: Purpose: AWS Lambda for retrieving, creating, and batch posting cash receipts to Oracle AR.
|
||||
Processing Logic:
|
||||
• GetCashReceipt(): Retrieves receipts with pagination (25 per page), defaults to last 12 months if no date specified
|
||||
• GetCashReceiptByReceiptId(): Retrieves receipts by specific ReceiptId
|
||||
• Post(): Creates single cash receipt in Oracle
|
||||
• BatchPost(): Creates multiple cash receipts in single batch operation
|
||||
Key Rules:
|
||||
• LookupStartDate must be within past year from today
|
||||
• Pagination continues until fewer than 25 results returned
|
||||
• Results deduplicated by ReceiptId
|
||||
• BatchPost validates ClientBatchRef is not null/empty
|
||||
Example Questions:
|
||||
• How do I retrieve cash receipts for an account?
|
||||
• Which Lambda posts cash receipts to Oracle?
|
||||
• How does cash receipt pagination work?
|
||||
---
|
||||
Title: Cash Receipt Pagination and Lookback Logic
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: CashReceiptLambda
|
||||
• type: workflow
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle
|
||||
Content: Purpose: Paginated retrieval workflow for cash receipts with automatic date range handling.
|
||||
Workflow Steps:
|
||||
1. Validate LookupStartDate within past year (default: 12 months ago if null)
|
||||
2. Retrieve batch of receipts (max 25) from Oracle
|
||||
3. If results found, update LookupStartDate to first receipt's ReceiptDate
|
||||
4. Add results to collection
|
||||
5. Continue if exactly 25 results returned (indicates more available)
|
||||
6. Deduplicate final collection by ReceiptId
|
||||
Key Rules:
|
||||
• maxLookBackDate = DateTime.Today.AddYears(-1)
|
||||
• Throws ArgumentException if LookupStartDate < maxLookBackDate
|
||||
• Pagination stops when result count < 25
|
||||
Example Questions:
|
||||
• How does cash receipt pagination work?
|
||||
• What is the maximum lookback period for receipts?
|
||||
• How are duplicate receipts handled?
|
||||
---
|
||||
Title: OracleReceipt DTO Structure
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: OracleReceipt
|
||||
• type: concept
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle
|
||||
Content: Purpose: Data structure representing a cash receipt in Oracle AR system.
|
||||
Key Properties:
|
||||
• ReceiptId (long), ReceiptNumber (string): Identifiers
|
||||
• ReceiptDate, AccountingDate (DateTime): Date fields
|
||||
• Amount, UnappliedAmount (decimal): Receipt amounts
|
||||
• ReceiptState (default: "Unapplied"), ReceiptStatus (default: "Remitted")
|
||||
• CustomerAccountNumber (string): Customer identifier
|
||||
• Comments, IntercompanyPaymentReference, UnidentifiedFundsClassification, RefundInvoiceNumber (string): Additional info
|
||||
Default Values:
|
||||
• BusinessUnit: "HFA BU"
|
||||
• BusinessGroup: "HFA"
|
||||
• ReceiptMethod: "HFA I/C VMF"
|
||||
• Currency: "USD"
|
||||
Example Questions:
|
||||
• What fields define an Oracle cash receipt?
|
||||
• What are the default receipt values?
|
||||
• How are unapplied amounts tracked?
|
||||
---
|
||||
Title: MapCashReceipt Lambda - Escrow Event to Receipt Mapping
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: MapCashReceipt
|
||||
• type: component
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle
|
||||
Content: Purpose: AWS Lambda that maps EscrowDisbursementInsuranceEvent to OracleReceipt using AutoMapper.
|
||||
Processing Logic:
|
||||
• Map(): Uses AutoMapper to transform EscrowDisbursementInsuranceEvent to OracleReceipt
|
||||
• MapCustomer(): Extracts CustomerAccountNumber from customer's HFA account
|
||||
• Logs event, receipt, and customer data as JSON for troubleshooting
|
||||
Key Rules:
|
||||
• Filters customer accounts for AccountSource equals "HFA" (case-insensitive)
|
||||
• Uses First() to select HFA account (assumes exists)
|
||||
• Sets receipt.CustomerAccountNumber from hfaAccount.AccountNumber
|
||||
Example Questions:
|
||||
• How do I map escrow events to cash receipts?
|
||||
• Which Lambda converts insurance events to receipts?
|
||||
• How is customer account number extracted?
|
||||
---
|
||||
Title: EscrowDisbursementInsuranceEvent to OracleReceipt AutoMapper Profile
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: AutoMapperProfile
|
||||
• type: rule
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle
|
||||
Content: Purpose: AutoMapper configuration for mapping EscrowDisbursementInsuranceEvent to OracleReceipt.
|
||||
Mapping Rules:
|
||||
• Amount ← Payload.Amount
|
||||
• ReceiptNumber ← Payload.PolicyNumber
|
||||
• ReceiptDate ← Payload.Date
|
||||
• AccountingDate ← Payload.Date
|
||||
• IntercompanyPaymentReference ← Payload.LoanNumber
|
||||
Configuration: Defined in CreateReceiptMappingProfile() within AutoMapperProfile class.
|
||||
Example Questions:
|
||||
• How are escrow events mapped to receipts?
|
||||
• What AutoMapper profile maps insurance events?
|
||||
• How is ReceiptNumber derived from events?
|
||||
---
|
||||
Title: CashReceiptMapDto - Receipt Mapping Input
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: CashReceiptMapDto
|
||||
• type: concept
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle
|
||||
Content: Purpose: Input DTO containing event and customer data for cash receipt mapping.
|
||||
Properties:
|
||||
• EscrowDisbursementInsuranceEvent: Source event containing disbursement details
|
||||
• OracleCustomer: Customer data with accounts for extracting CustomerAccountNumber
|
||||
Processing Context:
|
||||
• Used by MapCashReceipt.Map() to transform event to OracleReceipt
|
||||
• Provides customer account context for mapping
|
||||
• Enables customer account number extraction from HFA account
|
||||
Example Questions:
|
||||
• What input is needed for receipt mapping?
|
||||
• How do I pass event and customer data together?
|
||||
• What DTO contains receipt mapping context?
|
||||
---
|
||||
Title: CashReceiptGetDTO - Receipt Query Parameters
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: CashReceiptGetDTO
|
||||
• type: concept
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle
|
||||
Content: Purpose: Query parameters DTO for retrieving cash receipts from Oracle.
|
||||
Properties:
|
||||
• AccountId (string, nullable): Customer account number filter
|
||||
• LookupStartDate (DateOnly, nullable): Start date for receipt lookup
|
||||
• ReceiptId (string, nullable): Specific receipt identifier
|
||||
Processing Context:
|
||||
• Used by CashReceiptLambda.GetCashReceipt() for paginated queries
|
||||
• Used by CashReceiptLambda.GetCashReceiptByReceiptId() for single receipt lookup
|
||||
• LookupStartDate defaults to 12 months ago if null
|
||||
Example Questions:
|
||||
• What parameters filter cash receipt queries?
|
||||
• How do I query receipts by date range?
|
||||
• What DTO specifies receipt lookup criteria?
|
||||
---
|
||||
Title: EscrowDisbursementInsuranceEventPayload - Insurance Escrow Data
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: EscrowDisbursementInsuranceEventPayload
|
||||
• type: concept
|
||||
• domain: Cash Receipts
|
||||
• system: Insurance/Escrow
|
||||
Content: Purpose: Payload structure for escrow disbursement insurance events.
|
||||
Properties:
|
||||
• Id (Guid): Event identifier
|
||||
• AccountIdentifier: Account type and value
|
||||
• Date, EffectiveDate (DateTime): Disbursement dates
|
||||
• Amount (decimal): Disbursement amount
|
||||
• CompanyNumber, CustomerNumber, LoanNumber (int): Entity identifiers
|
||||
• TransferCode (int): Transfer type
|
||||
• PolicyNumber (string): Insurance policy identifier
|
||||
PII Fields: AccountIdentifier, CustomerNumber, LoanNumber, PolicyNumber marked with PersonallyIdentifiableInformation attribute.
|
||||
Example Questions:
|
||||
• What data is in escrow disbursement events?
|
||||
• How are insurance disbursements structured?
|
||||
• What PII is tracked in escrow events?
|
||||
---
|
||||
Title: EscrowDisbursementInsuranceEvent - Event Message Structure
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: EscrowDisbursementInsuranceEvent
|
||||
• type: concept
|
||||
• domain: Cash Receipts
|
||||
• system: Event Bus
|
||||
Content: Purpose: Event message wrapper for escrow disbursement insurance payloads.
|
||||
Structure:
|
||||
• Inherits from EventMessage<EscrowDisbursementInsuranceEventPayload>
|
||||
• EventType attribute: EventType = "EscrowDisbursement", SubType = "Insurance"
|
||||
• Contains strongly-typed Payload of type EscrowDisbursementInsuranceEventPayload
|
||||
Usage: Consumed by MapCashReceipt to create cash receipts from escrow disbursements.
|
||||
Example Questions:
|
||||
• What event triggers cash receipt creation?
|
||||
• How are escrow events structured?
|
||||
• What event type represents insurance disbursements?
|
||||
---
|
||||
Title: BatchCashReceipt - Batch Upload Receipt Item
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: BatchCashReceipt
|
||||
• type: concept
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle
|
||||
Content: Purpose: Single cash receipt item structure for batch upload operations.
|
||||
Properties:
|
||||
• ReceiptNumber, ReceiptMethod, BusinessUnit: Receipt identifiers
|
||||
• Amount (decimal), Currency: Monetary values
|
||||
• CustomerAccountNumber: Customer identifier
|
||||
• ReceiptMatchBy, ReferenceAmount, ReferenceNumber: Matching criteria
|
||||
• BusinessGroup, IntercompanyPaymentReference: Business context
|
||||
• UnidentifiedFundsClassification, UnidentifiedFundsSourceDocument: Unidentified fund handling
|
||||
• RefundInvoiceNumber: Refund reference
|
||||
Usage: Collection of these items wrapped in BatchCashReceiptRequest for batch posting.
|
||||
Example Questions:
|
||||
• What fields define a batch receipt item?
|
||||
• How are batch receipts structured?
|
||||
• What matching criteria are supported?
|
||||
---
|
||||
Title: BatchCashReceiptRequest - Batch Receipt Submission
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: BatchCashReceiptRequest
|
||||
• type: concept
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle
|
||||
Content: Purpose: Request structure for submitting multiple cash receipts in a single batch operation.
|
||||
Properties:
|
||||
• Receipts (IEnumerable<BatchCashReceipt>): Collection of receipt items
|
||||
• ClientBatchRef (string): Client-provided unique batch identifier
|
||||
Validation Rules:
|
||||
• BatchCashReceiptRequest cannot be null
|
||||
• Receipts collection cannot be null
|
||||
• ClientBatchRef must not be null/whitespace
|
||||
• Empty Receipts collection returns immediately without error
|
||||
Example Questions:
|
||||
• How do I submit batch cash receipts?
|
||||
• What validates batch receipt requests?
|
||||
• What DTO wraps batch receipt collections?
|
||||
---
|
||||
Title: CashReceiptOicIntegration - Cash Receipt API Client
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: CashReceiptOicIntegration
|
||||
• type: component
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle OIC
|
||||
Content: Purpose: Oracle Integration Cloud (OIC) client for cash receipt operations.
|
||||
Endpoints:
|
||||
• CashReceiptPrefixEndpoint: "/ic/api/integration/v1/flows/rest/CHI_RECEIPT_API/1.0/Receipt?"
|
||||
• BatchCashReceiptEndpoint: "/ic/api/integration/v2/flows/rest/project/CHI_HFA_OASIS/CHI_HFA_BATCHCAS_API/1.0/CashReceipt/Batch"
|
||||
Methods:
|
||||
• GetCashReceiptAsync(): GET with AccountId and date filter
|
||||
• GetCashReceiptByReceiptIdAsync(): GET by ReceiptId
|
||||
• PostCashReceiptAsync(): POST single receipt
|
||||
• PostBatchCashReceiptsAsync(): POST batch receipts to v2 endpoint
|
||||
Key Rules:
|
||||
• Extracts "ARReceipts" array from JSON response
|
||||
• Returns empty list if no results
|
||||
Example Questions:
|
||||
• What are the Oracle cash receipt endpoints?
|
||||
• How do I integrate with Oracle receipt API?
|
||||
• Which integration handles batch receipts?
|
||||
---
|
||||
Title: Cash Receipt Query Endpoint Construction
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: CashReceiptOicIntegration
|
||||
• type: rule
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle OIC
|
||||
Content: Purpose: Defines Oracle API endpoint URL construction rules for cash receipt queries.
|
||||
Endpoint Patterns:
|
||||
• By Account and Date: "{prefix}CustomerAccountNumber={accountId}&q=ReceiptDate>={receiptDate}"
|
||||
• By Receipt ID: "{prefix}ReceiptId={receiptId}"
|
||||
• Post Receipt: "{prefix}CustomerAccountNumber={customerAccountNumber}&q=ReceiptDate>={receiptDate}"
|
||||
Date Format: "yyyy-MM-dd"
|
||||
Base Prefix: "/ic/api/integration/v1/flows/rest/CHI_RECEIPT_API/1.0/Receipt?"
|
||||
Example Questions:
|
||||
• How are receipt query URLs constructed?
|
||||
• What date format is used in receipt queries?
|
||||
• How do I query receipts by account and date?
|
||||
---
|
||||
Title: Cash Receipt JSON Response Parsing
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: CashReceiptOicIntegration
|
||||
• type: rule
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle OIC
|
||||
Content: Purpose: Extracts receipt array from Oracle API JSON response wrapper.
|
||||
Processing Logic:
|
||||
• Parse JSON string to JObject
|
||||
• Extract "ARReceipts" property as JArray
|
||||
• Convert JArray to string
|
||||
• Deserialize to IEnumerable<OracleReceipt>
|
||||
• Return empty list if array is null or JSON is empty string
|
||||
Method: GetArrayString(string jsonString, string arrayPropValue)
|
||||
Key Rule: Empty JSON responses return empty list rather than null.
|
||||
Example Questions:
|
||||
• How are Oracle receipt responses parsed?
|
||||
• What JSON property contains receipts?
|
||||
• How are empty responses handled?
|
||||
---
|
||||
Title: ReceiptStatic Constants - Receipt Configuration Values
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: ReceiptStatic
|
||||
• type: rule
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle
|
||||
Content: Purpose: Centralized constant values for cash receipt processing.
|
||||
Constants:
|
||||
• ReceiptMethodIcVmf: "HFA I/C VMF" (default receipt method)
|
||||
• Unapplied: "Unapplied" (receipt state for unallocated receipts)
|
||||
• Remitted: "Remitted" (default receipt status)
|
||||
Usage: Referenced throughout receipt processing for consistent value assignment to ReceiptMethod, ReceiptState, and ReceiptStatus fields.
|
||||
Example Questions:
|
||||
• What is the default receipt method for HFA?
|
||||
• What value indicates an unapplied receipt?
|
||||
• What are valid receipt status values?
|
||||
---
|
||||
Title: HFA Account Extraction from Customer
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: MapCashReceipt
|
||||
• type: rule
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle
|
||||
Content: Purpose: Extracts HFA account number from Oracle customer account collection.
|
||||
Extraction Logic:
|
||||
• Filter customer.Accounts for AccountSource equals "HFA" (case-insensitive, InvariantCultureIgnoreCase)
|
||||
• Use First() to select matching account
|
||||
• Extract AccountNumber from selected account
|
||||
• Assign to receipt.CustomerAccountNumber
|
||||
Key Rule: Assumes at least one HFA account exists (First() throws if none found).
|
||||
Example Questions:
|
||||
• How is customer account number extracted?
|
||||
• How do I filter for HFA accounts?
|
||||
• What comparison is used for AccountSource matching?
|
||||
---
|
||||
Title: Cash Receipt Batch Validation Rules
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: CashReceiptLambda
|
||||
• type: rule
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle
|
||||
Content: Purpose: Defines validation rules for batch cash receipt submissions.
|
||||
Validation Rules:
|
||||
1. BatchCashReceiptRequest cannot be null (throws ArgumentNullException)
|
||||
2. Receipts collection cannot be null (throws ArgumentNullException)
|
||||
3. ClientBatchRef must not be null/whitespace (throws ArgumentException)
|
||||
4. Empty Receipts collection (Any() returns false) results in early return without processing
|
||||
Processing: Validation occurs in CashReceiptLambda.BatchPost() before calling integration.
|
||||
Example Questions:
|
||||
• What validates batch receipt requests?
|
||||
• What happens if receipts collection is empty?
|
||||
• Is ClientBatchRef required for batch posts?
|
||||
---
|
||||
Title: Cash Receipt Default Field Values
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: OracleReceipt
|
||||
• type: rule
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle
|
||||
Content: Purpose: Defines standard default values for OracleReceipt properties.
|
||||
Default Values:
|
||||
• ReceiptState: "Unapplied" (from ReceiptStatic.Unapplied)
|
||||
• ReceiptStatus: "Remitted" (from ReceiptStatic.Remitted)
|
||||
• BusinessUnit: "HFA BU" (from HfaStatic.HfaBusinessUnit)
|
||||
• BusinessGroup: "HFA" (from HfaStatic.HFA)
|
||||
• ReceiptMethod: "HFA I/C VMF" (from ReceiptStatic.ReceiptMethodIcVmf)
|
||||
• Currency: "USD" (from HfaStatic.USD)
|
||||
Usage: Set during OracleReceipt instantiation or mapping operations.
|
||||
Example Questions:
|
||||
• What are default receipt field values?
|
||||
• What currency is used for receipts?
|
||||
• What receipt state is default?
|
||||
---
|
||||
Title: Cash Receipt Event-to-Receipt Mapping Workflow
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.CashReceipts
|
||||
• component: MapCashReceipt
|
||||
• type: workflow
|
||||
• domain: Cash Receipts
|
||||
• system: Oracle
|
||||
Content: Purpose: Workflow for transforming EscrowDisbursementInsuranceEvent into OracleReceipt.
|
||||
Workflow Steps:
|
||||
1. Log incoming EscrowDisbursementInsuranceEvent as JSON
|
||||
2. Use AutoMapper to transform event to OracleReceipt (Amount, ReceiptNumber, dates, LoanNumber)
|
||||
3. Filter customer.Accounts for AccountSource = "HFA" (case-insensitive)
|
||||
4. Extract AccountNumber from HFA account
|
||||
5. Set receipt.CustomerAccountNumber to extracted value
|
||||
6. Log mapped receipt and customer details as JSON
|
||||
7. Return completed OracleReceipt
|
||||
Example Questions:
|
||||
• How are escrow events converted to receipts?
|
||||
• What workflow maps insurance disbursements?
|
||||
• How is customer account linked to receipts?
|
||||
---
|
||||
This completes the RAG knowledge chunks for the CMH.HFA.Accounting.AccountsReceivable.CashReceipts module. Each chunk is atomic, non-overlapping, and optimized for retrieval-augmented generation with precise technical details about cash receipt processing, event mapping, and Oracle integration.
|
||||
458
Books/Accounting/AccountsReceivable/AccountsReceivableCommon.txt
Normal file
458
Books/Accounting/AccountsReceivable/AccountsReceivableCommon.txt
Normal file
@@ -0,0 +1,458 @@
|
||||
RAG Knowledge Chunks for CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
---
|
||||
Title: Adjustment Base Class - Common Adjustment Properties
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: Adjustment
|
||||
• type: concept
|
||||
• domain: Adjustments
|
||||
• system: Oracle
|
||||
Content: Purpose: Abstract base class defining common properties for invoice and credit memo adjustments in Oracle AR.
|
||||
Core Properties:
|
||||
• AdjustmentId, AdjustmentNumber: Identifiers
|
||||
• OrgId, CustomerTrxId, ReceivablesTrxId: Oracle references
|
||||
• TransactionAdjustmentType, AdjustmentType: Classification
|
||||
• Amount (string), ApplyDate, GlDate (DateOnly): Financial data
|
||||
• PaymentScheduleId, SetOfBooksId: Accounting references
|
||||
• Comments, CurrencyCode, Status, ReasonCode: Metadata
|
||||
Special JSON Properties:
|
||||
• BusinessUnit: Mapped from "__FLEX_Context"
|
||||
• RequiresApproval: Mapped from "Attribute1"
|
||||
Inheritance: InvoiceAdjustment and CreditMemoAdjustment inherit from this base.
|
||||
Example Questions:
|
||||
• What properties are common to all adjustments?
|
||||
• How is BusinessUnit mapped in adjustment JSON?
|
||||
• What is the base class for invoice adjustments?
|
||||
---
|
||||
Title: InvoiceAdjustment DTO - Invoice Adjustment Type
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: InvoiceAdjustment
|
||||
• type: concept
|
||||
• domain: Invoice Adjustments
|
||||
• system: Oracle
|
||||
Content: Purpose: Data structure representing invoice-specific adjustments, inheriting all properties from Adjustment base class.
|
||||
Structure:
|
||||
• Inherits all properties from Adjustment abstract class
|
||||
• No additional properties defined
|
||||
• Used to distinguish invoice adjustments from credit memo adjustments at type level
|
||||
Usage: Provides strong typing for invoice adjustment operations while leveraging common adjustment properties from base class.
|
||||
Example Questions:
|
||||
• What type represents invoice adjustments?
|
||||
• Does InvoiceAdjustment have unique properties?
|
||||
• What class does InvoiceAdjustment inherit from?
|
||||
---
|
||||
Title: CreditMemoAdjustment DTO - Credit Memo Adjustment Type
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: CreditMemoAdjustment
|
||||
• type: concept
|
||||
• domain: Credit Memo Adjustments
|
||||
• system: Oracle
|
||||
Content: Purpose: Data structure representing credit memo-specific adjustments, inheriting all properties from Adjustment base class.
|
||||
Structure:
|
||||
• Inherits all properties from Adjustment abstract class
|
||||
• No additional properties defined
|
||||
• Used to distinguish credit memo adjustments from invoice adjustments at type level
|
||||
Usage: Provides strong typing for credit memo adjustment operations while leveraging common adjustment properties from base class.
|
||||
Example Questions:
|
||||
• What type represents credit memo adjustments?
|
||||
• Does CreditMemoAdjustment have unique properties?
|
||||
• What class does CreditMemoAdjustment inherit from?
|
||||
---
|
||||
Title: Installment DTO - Invoice Payment Schedule Structure
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: Installment
|
||||
• type: concept
|
||||
• domain: Installments
|
||||
• system: Oracle
|
||||
Content: Purpose: Data structure representing invoice payment installments with balance and payment tracking.
|
||||
Key Properties:
|
||||
• TransactionId (long): Invoice transaction identifier
|
||||
• InstallmentId (string): Installment identifier (JSON mapped from "Installment")
|
||||
• InstallmentSequence (int): Payment order sequence
|
||||
• InstallmentDueDate (string): Due date
|
||||
• InstallmentOriginalAmount, InstallmentBalanceDue (decimal): Amount tracking
|
||||
• AmountApplied, AmountCredited, AmountAdjusted, AmountInDispute (string): Payment details
|
||||
• InstallmentStatus (string): Status (e.g., "Open", "Closed")
|
||||
Computed Property:
|
||||
• AmountAdjustedDecimal: Parses AmountAdjusted to decimal (returns 0 if parse fails)
|
||||
Example Questions:
|
||||
• What fields define an installment?
|
||||
• How is InstallmentBalanceDue tracked?
|
||||
• What computed property parses AmountAdjusted?
|
||||
---
|
||||
Title: CreditMemo DTO - Credit Memo Transaction Structure
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: CreditMemo
|
||||
• type: concept
|
||||
• domain: Credit Memos
|
||||
• system: Oracle
|
||||
Content: Purpose: Data structure representing Oracle credit memo transactions with line items and unapplied balance tracking.
|
||||
Key Properties:
|
||||
• TransactionId, TransactionNumber, DocumentNumber: Identifiers
|
||||
• TransactionSource, TransactionType, CreditReason: Classification
|
||||
• TransactionDate, AccountingDate (DateOnly): Dates
|
||||
• CurrencyCode, LegalEntityId, UnappliedBalance: Financial data
|
||||
• CustomerAccountNumber, SitePurposeSiteNumber: Customer references
|
||||
• BusinessUnit, BusinessGroup, GenerateBill: Business context
|
||||
• ReceivablesCreditMemoLines (List<CreditMemoLine>): Line items (JSON: "receivablesCreditMemoLines")
|
||||
Computed Property:
|
||||
• UnappliedBalanceDecimal: Parses UnappliedBalance to decimal (returns 0 if parse fails)
|
||||
Example Questions:
|
||||
• What structure represents Oracle credit memos?
|
||||
• How is UnappliedBalance accessed as decimal?
|
||||
• What property contains credit memo line items?
|
||||
---
|
||||
Title: CreditMemoLine DTO - Credit Memo Line Item Structure
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: CreditMemoLine
|
||||
• type: concept
|
||||
• domain: Credit Memos
|
||||
• system: Oracle
|
||||
Content: Purpose: Data structure representing individual line items within credit memo transactions.
|
||||
Properties:
|
||||
• TransactionLineId (string): Line identifier (JSON mapped from "TransactionLineID")
|
||||
• LineNumber (string): Line sequence number
|
||||
• Description (string): Line description
|
||||
• Quantity (int): Item quantity
|
||||
• UnitPrice (decimal): Unit price
|
||||
• MemoLine (string): Memo line reference
|
||||
• CreatedBy, LastUpdatedBy (string): Audit fields
|
||||
• CreationDate, LastUpdateDate (DateTime): Audit timestamps
|
||||
Usage: Collection of CreditMemoLine objects stored in CreditMemo.ReceivablesCreditMemoLines.
|
||||
Example Questions:
|
||||
• What defines a credit memo line item?
|
||||
• How is line item identifier mapped from JSON?
|
||||
• What audit fields are tracked on credit memo lines?
|
||||
---
|
||||
Title: OracleIntegrationBase - Base Oracle OIC Integration
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: OracleIntegrationBase
|
||||
• type: component
|
||||
• domain: Integration
|
||||
• system: Oracle OIC
|
||||
Content: Purpose: Abstract base class for Oracle Integration Cloud (OIC) integrations providing authentication and request building.
|
||||
Processing Logic:
|
||||
• OicBaseUrl(): Constructs "https://erp-{oicEnv}-oicintegration-idq4hj6bgo2f-ia.integration.us-ashburn-1.ocp.oraclecloud.com"
|
||||
• GetRequestAsync(): Retrieves credentials from AWS Parameter Store, creates authenticated Flurl request with basic auth
|
||||
• UpdateEndpoint(): Appends endpoint path to existing Flurl request URL
|
||||
Secret Keys:
|
||||
• {environment}-hfa-oic-username
|
||||
• {environment}-hfa-oic-password
|
||||
• {environment}-hfa-oic-environment
|
||||
Key Rule: Throws exception if ENVIRONMENT variable not set.
|
||||
Example Questions:
|
||||
• How do Oracle integrations authenticate?
|
||||
• What is the OIC base URL structure?
|
||||
• Where are OIC credentials retrieved from?
|
||||
---
|
||||
Title: SecretString Service - AWS Parameter Store Integration
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: SecretString
|
||||
• type: component
|
||||
• domain: Configuration
|
||||
• system: AWS Parameter Store
|
||||
Content: Purpose: Service for retrieving encrypted secrets from AWS Systems Manager Parameter Store.
|
||||
Interface: ISecretString with GetSecretString(string key) method.
|
||||
Processing Logic:
|
||||
• Creates AmazonSimpleSystemsManagementClient
|
||||
• Builds GetParameterRequest with key and WithDecryption = true
|
||||
• Calls GetParameterAsync
|
||||
• Returns Parameter.Value from response
|
||||
Usage: Injected into integration classes to retrieve OIC credentials, mail relay certificates, and other secrets.
|
||||
Example Questions:
|
||||
• How are secrets retrieved from Parameter Store?
|
||||
• What service retrieves encrypted parameters?
|
||||
• Is decryption enabled for secret retrieval?
|
||||
---
|
||||
Title: MailRelayService - Email Relay Integration
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: MailRelayService
|
||||
• type: component
|
||||
• domain: Email/Notifications
|
||||
• system: Mail Relay
|
||||
Content: Purpose: Service for sending emails via Clayton's mail relay infrastructure with SSL certificate validation.
|
||||
Configuration:
|
||||
• Production: "mailrelay.cct-eto.com"
|
||||
• Non-production: "mailrelay.dev.cct-eto.com"
|
||||
• Port: 587
|
||||
• EnableSsl: true, Timeout: 30000ms
|
||||
Processing Logic:
|
||||
• Validates fromAddress and toAddress not null/empty
|
||||
• Creates SmtpClient via ISmtpClientFactory
|
||||
• Configures TLS certificate validation from Parameter Store
|
||||
• Sends MailMessage with optional attachments
|
||||
• Returns true on success, false on failure
|
||||
Key Rules:
|
||||
• IsBodyHtml = false (plain text)
|
||||
• Thread-safe certificate validation callback
|
||||
• Restores existing ServerCertificateValidationCallback after send
|
||||
Example Questions:
|
||||
• How do I send emails via mail relay?
|
||||
• What SMTP server is used for production?
|
||||
• What port does mail relay use?
|
||||
---
|
||||
Title: UnappliedNotificationHelper - Notification Utility Methods
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: UnappliedNotificationHelper
|
||||
• type: component
|
||||
• domain: Notifications
|
||||
• system: N/A
|
||||
Content: Purpose: Static utility methods for unapplied notification Lambda functions providing logging and subject line formatting.
|
||||
Methods:
|
||||
• SafeLog(string message): Wraps LambdaLogger.Log in try-catch for test environment compatibility
|
||||
• GetEnvironmentPrefixedSubject(string baseSubject): Adds environment prefix to subject for non-production emails
|
||||
Subject Line Logic:
|
||||
• Production: Returns baseSubject unchanged
|
||||
• Non-production: Prepends capitalized environment name (e.g., "Dev: {baseSubject}")
|
||||
• Default environment: "dev" if null/empty/whitespace
|
||||
Example Questions:
|
||||
• How do I prefix email subjects by environment?
|
||||
• What utility provides safe logging for tests?
|
||||
• How are production vs non-production email subjects distinguished?
|
||||
---
|
||||
Title: Environment-Based Email Subject Prefix Rule
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: UnappliedNotificationHelper
|
||||
• type: rule
|
||||
• domain: Notifications
|
||||
• system: N/A
|
||||
Content: Purpose: Defines rule for prefixing email subjects based on deployment environment.
|
||||
Logic:
|
||||
• Read ENVIRONMENT variable (default: "dev" if null/empty/whitespace)
|
||||
• Trim and convert to lowercase
|
||||
• If environment == "prod": return baseSubject unchanged
|
||||
• Else: capitalize first character, return "{CapitalizedEnv}: {baseSubject}"
|
||||
Examples:
|
||||
• prod: "Unapplied Cash Receipt Notification"
|
||||
• dev: "Dev: Unapplied Cash Receipt Notification"
|
||||
• sit: "Sit: Unapplied Cash Receipt Notification"
|
||||
Example Questions:
|
||||
• How are email subjects prefixed by environment?
|
||||
• Do production emails have subject prefixes?
|
||||
• What format is used for non-production subject prefixes?
|
||||
---
|
||||
Title: IMailRelayService Interface - Email Service Contract
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: IMailRelayService
|
||||
• type: component
|
||||
• domain: Email/Notifications
|
||||
• system: Mail Relay
|
||||
Content: Purpose: Interface defining contract for mail relay email services.
|
||||
Methods:
|
||||
• SendEmail(fromAddress, toAddress, subject, body): Sends plain text email
|
||||
• SendEmail(fromAddress, toAddress, subject, body, attachments): Sends plain text email with optional attachments
|
||||
Requirements:
|
||||
• fromAddress must use noreply_* format
|
||||
• Body is plain text (not HTML)
|
||||
• Returns true on success, false on failure
|
||||
Usage: Implemented by MailRelayService, injectable for testing and dependency management.
|
||||
Example Questions:
|
||||
• What interface defines email sending?
|
||||
• What format is required for sender addresses?
|
||||
• Do mail relay methods support attachments?
|
||||
---
|
||||
Title: ISmtpClientFactory Interface - SMTP Client Factory Contract
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: ISmtpClientFactory
|
||||
• type: component
|
||||
• domain: Email/Notifications
|
||||
• system: SMTP
|
||||
Content: Purpose: Factory interface for creating SMTP client instances, enabling dependency injection and testing.
|
||||
Method:
|
||||
• CreateSmtpClient(string host, int port): Creates configured SmtpClient instance
|
||||
Purpose: Enables mocking SMTP clients in unit tests to avoid real network I/O.
|
||||
Implementations:
|
||||
• DefaultSmtpClientFactory: Creates real SmtpClient for production
|
||||
• Test mocks: Provide fake/mock implementations for testing
|
||||
Example Questions:
|
||||
• How do I inject SMTP client creation?
|
||||
• What factory creates SMTP clients?
|
||||
• How are SMTP clients mocked for testing?
|
||||
---
|
||||
Title: DefaultSmtpClientFactory - Production SMTP Client Factory
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: DefaultSmtpClientFactory
|
||||
• type: component
|
||||
• domain: Email/Notifications
|
||||
• system: SMTP
|
||||
Content: Purpose: Default implementation of ISmtpClientFactory that creates real SMTP client instances for production use.
|
||||
Implementation:
|
||||
• CreateSmtpClient(string host, int port): Returns new SmtpClient(host, port)
|
||||
Usage: Registered in dependency injection container as singleton for production scenarios where actual email sending is required.
|
||||
Example Questions:
|
||||
• What creates real SMTP clients?
|
||||
• How is ISmtpClientFactory implemented for production?
|
||||
• What factory is used for actual email sending?
|
||||
---
|
||||
Title: NewtonsoftJsonLambdaSerializer - Lambda JSON Serialization
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: NewtonsoftJsonLambdaSerializer
|
||||
• type: component
|
||||
• domain: Serialization
|
||||
• system: AWS Lambda
|
||||
Content: Purpose: Custom Lambda serializer using Newtonsoft.Json with specific configuration for Lambda function input/output.
|
||||
Configuration:
|
||||
• NullValueHandling: Ignore (omit null properties)
|
||||
• Converters: StringEnumConverter (serialize enums as strings)
|
||||
Methods:
|
||||
• Serialize<T>(): Writes object to response stream as JSON, resets stream position to beginning
|
||||
• Deserialize<T>(): Reads object from request stream as JSON
|
||||
Global Settings: Sets JsonConvert.DefaultSettings on instantiation.
|
||||
Usage: Applied to Lambda functions via [assembly: LambdaSerializer(typeof(NewtonsoftJsonLambdaSerializer))].
|
||||
Example Questions:
|
||||
• How do Lambdas serialize JSON?
|
||||
• What JSON settings are used for Lambda functions?
|
||||
• How are enums serialized in Lambda responses?
|
||||
---
|
||||
Title: CommonBaseLambdaService - Base Lambda Service with DI
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: CommonBaseLambdaService
|
||||
• type: component
|
||||
• domain: Lambda Infrastructure
|
||||
• system: AWS Lambda
|
||||
Content: Purpose: Abstract base class for Lambda services providing dependency injection capabilities.
|
||||
Processing Logic:
|
||||
• ConfigureStartup(IStartup startup): Creates ServiceCollection, calls startup.ConfigureServices(), builds ServiceProvider
|
||||
• GetService<T>(): Resolves service instance from built ServiceProvider
|
||||
Usage: Lambda classes inherit from this to access dependency-injected services (integrations, helpers, etc.).
|
||||
Pattern: Constructor initializes dependencies via ConfigureStartup(), then GetService<T>() retrieves instances.
|
||||
Example Questions:
|
||||
• How do Lambda functions access dependency injection?
|
||||
• What base class provides DI for Lambdas?
|
||||
• How are services resolved in Lambda functions?
|
||||
---
|
||||
Title: IStartup Interface - Service Configuration Contract
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: IStartup
|
||||
• type: component
|
||||
• domain: Configuration
|
||||
• system: N/A
|
||||
Content: Purpose: Interface defining contract for configuring dependency injection services.
|
||||
Method:
|
||||
• ConfigureServices(IServiceCollection service): Registers services into DI container
|
||||
Usage: Implemented by startup classes to define service registrations for Lambda functions.
|
||||
Pattern: Lambda base classes call ConfigureServices() to build ServiceProvider for dependency resolution.
|
||||
Example Questions:
|
||||
• What interface configures DI services?
|
||||
• How do startups register dependencies?
|
||||
• What method registers services in DI container?
|
||||
---
|
||||
Title: ComonStartup - Common Service Configuration
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: ComonStartup
|
||||
• type: component
|
||||
• domain: Configuration
|
||||
• system: N/A
|
||||
Content: Purpose: Abstract base startup class that registers common services used across Lambda functions.
|
||||
Registered Services (Singleton):
|
||||
• IMailRelayService → MailRelayService
|
||||
• ISecretString → SecretString
|
||||
Usage: Lambda-specific startup classes inherit from ComonStartup to include common service registrations plus their own specific services.
|
||||
Pattern: Provides consistent service registration baseline across all Lambda projects in solution.
|
||||
Example Questions:
|
||||
• What services are registered by default?
|
||||
• What startup class provides common services?
|
||||
• How are mail relay and secret services registered?
|
||||
---
|
||||
Title: Mail Relay Environment-Based Server Selection
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: MailRelayService
|
||||
• type: rule
|
||||
• domain: Email/Notifications
|
||||
• system: Mail Relay
|
||||
Content: Purpose: Defines rule for selecting mail relay server based on deployment environment.
|
||||
Server Selection Logic:
|
||||
• Read ENVIRONMENT variable (default: "dev" if null)
|
||||
• Convert to lowercase
|
||||
• If environment == "prod": Use "mailrelay.cct-eto.com"
|
||||
• Else (dev, sit, etc.): Use "mailrelay.dev.cct-eto.com"
|
||||
Configuration:
|
||||
• Port: 587 (all environments)
|
||||
• SSL: Enabled (all environments)
|
||||
Example Questions:
|
||||
• What mail relay server is used in production?
|
||||
• How is mail server selected by environment?
|
||||
• What port is used for mail relay?
|
||||
---
|
||||
Title: Mail Relay TLS Certificate Validation
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: MailRelayService
|
||||
• type: workflow
|
||||
• domain: Email/Notifications
|
||||
• system: Mail Relay
|
||||
Content: Purpose: Configures TLS certificate validation for mail relay SMTP connections.
|
||||
Workflow:
|
||||
1. Retrieve cached certificate from Parameter Store (or cache)
|
||||
2. Lock _tlsCallbackLock for thread safety
|
||||
3. Set ServicePointManager.ServerCertificateValidationCallback
|
||||
4. Add certificate to chain.ChainPolicy.ExtraStore
|
||||
5. Build certificate chain: chain.Build((X509Certificate2)cert)
|
||||
6. Return validation result (true if valid)
|
||||
7. Restore previous callback after email sent
|
||||
Key Rules:
|
||||
• Certificate cached after first retrieval (_cachedCertificate)
|
||||
• Thread-safe callback management
|
||||
• Returns null-safe (skips if certificate null)
|
||||
Example Questions:
|
||||
• How is mail relay TLS validated?
|
||||
• How are mail relay certificates cached?
|
||||
• What ensures thread-safe certificate validation?
|
||||
---
|
||||
Title: Installment AmountAdjustedDecimal Parsing Rule
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: Installment
|
||||
• type: rule
|
||||
• domain: Installments
|
||||
• system: Oracle
|
||||
Content: Purpose: Provides safe decimal parsing of string-based AmountAdjusted field.
|
||||
Parsing Logic:
|
||||
• decimal.TryParse(AmountAdjusted, out var amount)
|
||||
• Returns parsed amount if successful
|
||||
• Returns 0m if parse fails
|
||||
Property: AmountAdjustedDecimal (computed, read-only)
|
||||
Usage: Enables numeric operations on adjustment amounts without exception risk from invalid string values.
|
||||
Example Questions:
|
||||
• How is AmountAdjusted converted to decimal?
|
||||
• What happens if AmountAdjusted parsing fails?
|
||||
• What computed property provides decimal adjustment amount?
|
||||
---
|
||||
Title: CreditMemo UnappliedBalanceDecimal Parsing Rule
|
||||
Metadata:
|
||||
• module: CMH.HFA.Accounting.AccountsReceivable.Common
|
||||
• component: CreditMemo
|
||||
• type: rule
|
||||
• domain: Credit Memos
|
||||
• system: Oracle
|
||||
Content: Purpose: Provides safe decimal parsing of string-based UnappliedBalance field.
|
||||
Parsing Logic:
|
||||
• Decimal.TryParse(UnappliedBalance, out decimal unappliedBalanceDecimal)
|
||||
• Returns parsed value if successful
|
||||
• Returns 0 if parse fails
|
||||
Property: UnappliedBalanceDecimal (computed, read-only)
|
||||
Usage: Enables numeric comparisons and calculations on credit memo balances without exception risk from invalid string values.
|
||||
Example Questions:
|
||||
• How is UnappliedBalance converted to decimal?
|
||||
• What happens if UnappliedBalance parsing fails?
|
||||
• What computed property provides decimal unapplied balance?
|
||||
---
|
||||
This completes the RAG knowledge chunks for the CMH.HFA.Accounting.AccountsReceivable.Common module. Each chunk is atomic, non-overlapping, and optimized for retrieval-augmented generation with precise technical details about common models, integration services, and infrastructure components.
|
||||
@@ -0,0 +1,276 @@
|
||||
Title: CreditMemoApplication Lambda - Get Method
|
||||
Metadata:
|
||||
• module: CreditMemoApplications
|
||||
• component: CreditMemoApplication
|
||||
• type: component
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Retrieves credit memo applications from Oracle AR based on search criteria.
|
||||
Processing Logic:
|
||||
• Accepts GetCreditMemoApplicationDto with search parameters
|
||||
• Delegates to ICreditMemoApplicationOicIntegration.GetCreditMemoApplicationAsync
|
||||
• Returns List<OracleCreditMemoApplication>
|
||||
• Lambda configuration: 256MB memory, 30s timeout
|
||||
Example Questions:
|
||||
• How do I retrieve credit memo applications by credit memo number?
|
||||
• What Lambda method gets credit memo applications from Oracle?
|
||||
• What are the input parameters for retrieving credit memo applications?
|
||||
---
|
||||
Title: CreditMemoApplication Lambda - Post Method
|
||||
Metadata:
|
||||
• module: CreditMemoApplications
|
||||
• component: CreditMemoApplication
|
||||
• type: component
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Posts a single credit memo application to Oracle AR system.
|
||||
Processing Logic:
|
||||
• Accepts OracleCreditMemoApplication DTO
|
||||
• Delegates to ICreditMemoApplicationOicIntegration.PostCreditMemoApplicationAsync
|
||||
• Returns posted OracleCreditMemoApplication with Oracle-assigned values
|
||||
• Lambda configuration: 256MB memory, 30s timeout
|
||||
Example Questions:
|
||||
• How do I create a credit memo application in Oracle?
|
||||
• What Lambda method posts credit memo applications?
|
||||
• What is the return value when posting a credit memo application?
|
||||
---
|
||||
Title: CreditMemoApplication Lambda - Pre Method (Preprocessing)
|
||||
Metadata:
|
||||
• module: CreditMemoApplications
|
||||
• component: CreditMemoApplication
|
||||
• type: component
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Preprocesses credit memo applications by matching unapplied credit memos to open installments.
|
||||
Processing Logic:
|
||||
• Accepts PreProcessCreditMemoApplicationsDto with CreditMemos and Installments collections
|
||||
• Filters credit memos where UnappliedBalanceDecimal < 0
|
||||
• Filters installments where InstallmentBalanceDue > 0, sorts by InstallmentSequence
|
||||
• Routes to ApplyEndorsementEvenly for "HFA CM Endorse Int" or "HFA CM Endorse Ext" transaction types
|
||||
• Routes to ApplySequentially for all other transaction types
|
||||
• Returns IEnumerable<OracleCreditMemoApplication>
|
||||
• Lambda configuration: 256MB memory, 30s timeout
|
||||
Example Questions:
|
||||
• How are credit memos matched to installments automatically?
|
||||
• What Lambda method generates credit memo application recommendations?
|
||||
• How does preprocessing determine which application algorithm to use?
|
||||
---
|
||||
Title: Credit Memo Application - Sequential Allocation Algorithm
|
||||
Metadata:
|
||||
• module: CreditMemoApplications
|
||||
• component: CreditMemoApplication
|
||||
• type: workflow
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Applies credit memo balance to installments sequentially (oldest first) using greedy algorithm.
|
||||
Processing Logic:
|
||||
1. Iterates through sorted installments (by InstallmentSequence ascending)
|
||||
2. For each installment with InstallmentBalanceDue > 0 and creditMemo.UnappliedBalanceDecimal < 0:
|
||||
• Calculates unappliedCreditMemoBalance = UnappliedBalanceDecimal * -1
|
||||
• Calculates amountApplied = Math.Min(unappliedCreditMemoBalance, InstallmentBalanceDue)
|
||||
• Creates OracleCreditMemoApplication with amountApplied
|
||||
• Updates creditMemo.UnappliedBalance (adds amountApplied)
|
||||
• Reduces installment.InstallmentBalanceDue by amountApplied
|
||||
3. Breaks when creditMemo.UnappliedBalanceDecimal == 0
|
||||
Example Questions:
|
||||
• How does the sequential credit memo allocation algorithm work?
|
||||
• How are credit memo balances applied to installments in order?
|
||||
• What is the greedy algorithm for credit memo applications?
|
||||
---
|
||||
Title: Credit Memo Application - Endorsement Even Distribution Algorithm
|
||||
Metadata:
|
||||
• module: CreditMemoApplications
|
||||
• component: CreditMemoApplication
|
||||
• type: workflow
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Distributes endorsement credit memo balance evenly across all open installments.
|
||||
Processing Logic:
|
||||
1. Calculates remainingToDistribute = Math.Abs(UnappliedBalanceDecimal)
|
||||
2. Filters active installments where InstallmentBalanceDue > 0
|
||||
3. Calculates equalShare = Math.Round(remainingToDistribute / installmentCount, 2, AwayFromZero)
|
||||
4. If equalShare <= 0, sets to Math.Min(remainingToDistribute, 0.01m)
|
||||
5. For each installment: allocates Math.Min(equalShare, InstallmentBalanceDue)
|
||||
6. Updates credit memo and installment balances after each allocation
|
||||
7. Adds any remaining balance to first installment (InstallmentNumber == "1")
|
||||
Key Rules:
|
||||
• Minimum allocation: 0.01m (one cent)
|
||||
• Remainder goes to installment 1
|
||||
Example Questions:
|
||||
• How are endorsement credit memos distributed across installments?
|
||||
• What transaction types trigger even distribution of credit memos?
|
||||
• How is rounding handled for endorsement credit memo applications?
|
||||
---
|
||||
Title: Credit Memo Application - Unapplied Credit Memo Filtering Rule
|
||||
Metadata:
|
||||
• module: CreditMemoApplications
|
||||
• component: CreditMemoApplication
|
||||
• type: rule
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Filters credit memos eligible for automatic application.
|
||||
Processing Logic:
|
||||
• Filters credit memos where UnappliedBalanceDecimal < 0 (negative indicates available credit)
|
||||
• Returns empty collection if no unapplied credit memos or no installments available
|
||||
• Negative UnappliedBalanceDecimal values represent credit available to apply
|
||||
Key Rules:
|
||||
• UnappliedBalanceDecimal < 0 indicates available credit
|
||||
• Both credit memos and installments must exist for processing
|
||||
Example Questions:
|
||||
• How do I identify credit memos available for application?
|
||||
• What does a negative UnappliedBalanceDecimal mean?
|
||||
• What filtering rules determine eligible credit memos?
|
||||
---
|
||||
Title: Credit Memo Application - Endorsement Transaction Type Rule
|
||||
Metadata:
|
||||
• module: CreditMemoApplications
|
||||
• component: CreditMemoApplication
|
||||
• type: rule
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Determines credit memo application algorithm based on transaction type.
|
||||
Processing Logic:
|
||||
• If TransactionType is "HFA CM Endorse Int" OR "HFA CM Endorse Ext": use ApplyEndorsementEvenly
|
||||
• All other transaction types: use ApplySequentially
|
||||
Key Rules:
|
||||
• Endorsement internal and external credit memos distribute evenly
|
||||
• Standard credit memos apply sequentially
|
||||
• Constants: HfaCmEndorseInt = "HFA CM Endorse Int", HfaCmEndorseExt = "HFA CM Endorse Ext"
|
||||
Example Questions:
|
||||
• How does the system determine credit memo application strategy?
|
||||
• What transaction types trigger even distribution?
|
||||
• How are endorsement credit memos handled differently?
|
||||
---
|
||||
Title: OracleCreditMemoApplication DTO
|
||||
Metadata:
|
||||
• module: CreditMemoApplications
|
||||
• component: OracleCreditMemoApplication
|
||||
• type: concept
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Data transfer object representing credit memo applications in Oracle AR.
|
||||
Processing Logic:
|
||||
• Core properties: ActionType, ApplicationId, ApplicationDate, ApplicationAmount, ApplicationStatus, AccountingDate
|
||||
• Relationship properties: CreditMemoId, CreditMemoNumber, InvoiceId, InvoiceNumber, InstallmentId, InstallmentNumber
|
||||
• Metadata properties: BusinessUnit, TransactionType, CreditMemoStatus, ReferenceTransactionStatus, CustomerSiteNumber, Comments, IsLatestApplication
|
||||
• Computed property: AppAmount (decimal parsed from ApplicationAmount string)
|
||||
Example Questions:
|
||||
• What properties define a credit memo application?
|
||||
• How is the application amount stored in Oracle integration?
|
||||
• What identifiers link a credit memo application to invoices and installments?
|
||||
---
|
||||
Title: PreProcessCreditMemoApplicationsDto
|
||||
Metadata:
|
||||
• module: CreditMemoApplications
|
||||
• component: PreProcessCreditMemoApplicationsDto
|
||||
• type: concept
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Input DTO for credit memo application preprocessing Lambda method.
|
||||
Processing Logic:
|
||||
• CreditMemos: IEnumerable<CreditMemo> collection of credit memos to apply
|
||||
• Installments: IEnumerable<Installment> collection of target installments
|
||||
• InvoiceId: string identifier for the invoice being applied to
|
||||
• Used as input to Pre() method for automatic credit memo application generation
|
||||
Example Questions:
|
||||
• What input does the credit memo preprocessing method require?
|
||||
• How do I specify credit memos and installments for automatic matching?
|
||||
• What is the structure of the preprocessing request DTO?
|
||||
---
|
||||
Title: GetCreditMemoApplicationDto
|
||||
Metadata:
|
||||
• module: CreditMemoApplications
|
||||
• component: GetCreditMemoApplicationDto
|
||||
• type: concept
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Query parameters DTO for retrieving credit memo applications.
|
||||
Processing Logic:
|
||||
• ApplicationId: filters by unique application identifier
|
||||
• CustAccountId: filters by customer account identifier
|
||||
• CreditMemoNumber: filters by credit memo number
|
||||
• InvoiceNumber: filters by invoice number
|
||||
• HasSearchCriteriaAvailable: computed property returns true if any parameter is non-empty
|
||||
• At least one parameter required for valid query
|
||||
Example Questions:
|
||||
• What search criteria can I use to find credit memo applications?
|
||||
• How do I query credit memo applications by customer account?
|
||||
• What validation ensures search criteria are provided?
|
||||
---
|
||||
Title: CreditMemoApplicationOicIntegration - POST Method
|
||||
Metadata:
|
||||
• module: CreditMemoApplications
|
||||
• component: CreditMemoApplicationOicIntegration
|
||||
• type: component
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle OIC
|
||||
Content:
|
||||
Purpose: Posts credit memo application to Oracle Integration Cloud.
|
||||
Processing Logic:
|
||||
• Endpoint: "/ic/api/integration/v1/flows/rest/CHI_CREDTIMEMO_API/1.0/CreditMemoApplication"
|
||||
• Serializes OracleCreditMemoApplication to JSON using Newtonsoft.Json
|
||||
• Sets Content-Type header to "application/json"
|
||||
• Posts via Flurl PostStringAsync
|
||||
• Deserializes response to OracleCreditMemoApplication
|
||||
• Returns created application with Oracle-assigned values
|
||||
Example Questions:
|
||||
• What Oracle OIC endpoint is used for posting credit memo applications?
|
||||
• How are credit memo applications serialized for Oracle integration?
|
||||
• What is the return value from the Oracle credit memo application API?
|
||||
---
|
||||
Title: CreditMemoApplicationOicIntegration - GET Method
|
||||
Metadata:
|
||||
• module: CreditMemoApplications
|
||||
• component: CreditMemoApplicationOicIntegration
|
||||
• type: component
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle OIC
|
||||
Content:
|
||||
Purpose: Retrieves credit memo applications from Oracle Integration Cloud with query filters.
|
||||
Processing Logic:
|
||||
• Validates GetCreditMemoApplicationDto.HasSearchCriteriaAvailable, throws ArgumentException if false
|
||||
• Endpoint: "/ic/api/integration/v1/flows/rest/CHI_CREDTIMEMO_API/1.0/CreditMemoApplication"
|
||||
• Appends query parameters via SetQueryParam for: ApplicationId, CustAccountId, CreditMemoNumber, InvoiceNumber
|
||||
• Parses JSON response, checks for "CreditMemoApplications" wrapper property
|
||||
• If wrapper exists, extracts array from jsonObject["CreditMemoApplications"]
|
||||
• Returns List<OracleCreditMemoApplication>
|
||||
• Throws exception with FlurlHttpException details on error
|
||||
Example Questions:
|
||||
• How do I retrieve credit memo applications by invoice number?
|
||||
• What validation is performed on credit memo application search criteria?
|
||||
• How does the API handle JSON response parsing for credit memo applications?
|
||||
---
|
||||
Title: Credit Memo Application - Standard Field Values
|
||||
Metadata:
|
||||
• module: CreditMemoApplications
|
||||
• component: CreditMemoApplication
|
||||
• type: rule
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Defines default values for credit memo application fields.
|
||||
Processing Logic:
|
||||
• ActionType: "Apply"
|
||||
• ApplicationDate: DateOnly.FromDateTime(DateTime.Today)
|
||||
• BusinessUnit: "HFA BU"
|
||||
• ApplicationAmount: decimal amount converted to string
|
||||
• InvoiceId, InstallmentId, CreditMemoId: from input parameters
|
||||
• InstallmentNumber: InstallmentSequence converted to string
|
||||
Key Rules:
|
||||
• ApplicationDate always set to today's date
|
||||
• ActionType always "Apply" for automatic applications
|
||||
• BusinessUnit always "HFA BU"
|
||||
Example Questions:
|
||||
• What are the default values for credit memo application fields?
|
||||
• What ActionType is used for automatic credit memo applications?
|
||||
• How is the application date determined for credit memo applications?
|
||||
@@ -0,0 +1,190 @@
|
||||
Title: CreditMemoLambda - Post Method
|
||||
Metadata:
|
||||
• module: CreditMemos
|
||||
• component: CreditMemoLambda
|
||||
• type: component
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Posts a credit memo to Oracle AR system.
|
||||
Processing Logic:
|
||||
• Accepts CreditMemo model from Common namespace
|
||||
• Delegates to ICreditMemoOicIntegration.PostCreditMemoAsync
|
||||
• Returns posted CreditMemo with Oracle-assigned values
|
||||
• Lambda configuration: 256MB memory, 30s timeout
|
||||
• Resource name: "CreditMemoPost"
|
||||
Example Questions:
|
||||
• How do I create a credit memo in Oracle?
|
||||
• What Lambda method posts credit memos?
|
||||
• What is the return value when posting a credit memo?
|
||||
---
|
||||
Title: CreditMemoLambda - Get Method
|
||||
Metadata:
|
||||
• module: CreditMemos
|
||||
• component: CreditMemoLambda
|
||||
• type: component
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Retrieves credit memos from Oracle AR based on search criteria.
|
||||
Processing Logic:
|
||||
• Accepts GetCreditMemosDto with search parameters
|
||||
• Delegates to ICreditMemoOicIntegration.GetCreditMemoAsync
|
||||
• Returns IEnumerable<CreditMemo>
|
||||
• Lambda configuration: 256MB memory, 30s timeout
|
||||
Example Questions:
|
||||
• How do I retrieve credit memos by customer account number?
|
||||
• What Lambda method gets credit memos from Oracle?
|
||||
• What search criteria can I use to find credit memos?
|
||||
---
|
||||
Title: CreditMemoLambda - SelectMostRecentValidCreditMemo Method
|
||||
Metadata:
|
||||
• module: CreditMemos
|
||||
• component: CreditMemoLambda
|
||||
• type: component
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Filters and selects the most recent valid cancellation credit memo from a list.
|
||||
Processing Logic:
|
||||
• Accepts List<CreditMemo>
|
||||
• Filters by AllowedTypes: "HFA CM Cancel Int" or "HFA CM Cancel Ext" (case-insensitive)
|
||||
• Orders by TransactionDate descending
|
||||
• Returns first match or null if none found
|
||||
• Lambda configuration: 256MB memory, 30s timeout
|
||||
Example Questions:
|
||||
• How do I find the most recent cancellation credit memo?
|
||||
• What credit memo types are valid for selection?
|
||||
• How does the system filter credit memos by transaction type?
|
||||
---
|
||||
Title: Credit Memo - Valid Cancellation Type Rule
|
||||
Metadata:
|
||||
• module: CreditMemos
|
||||
• component: CreditMemoLambda
|
||||
• type: rule
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Defines allowed transaction types for cancellation credit memo selection.
|
||||
Processing Logic:
|
||||
• AllowedTypes HashSet contains: "HFA CM Cancel Int", "HFA CM Cancel Ext"
|
||||
• Case-insensitive comparison via StringComparer.OrdinalIgnoreCase
|
||||
• Used by SelectMostRecentValidCreditMemo to filter valid credit memos
|
||||
Key Rules:
|
||||
• Only internal and external cancellation credit memos are valid
|
||||
• Case-insensitive matching
|
||||
Example Questions:
|
||||
• What transaction types are valid for cancellation credit memos?
|
||||
• How are credit memo types validated for selection?
|
||||
• Is credit memo type matching case-sensitive?
|
||||
---
|
||||
Title: GetCreditMemosDto
|
||||
Metadata:
|
||||
• module: CreditMemos
|
||||
• component: GetCreditMemosDto
|
||||
• type: concept
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Query parameters DTO for retrieving credit memos from Oracle.
|
||||
Processing Logic:
|
||||
• CustomerAccountNumber: filters by customer account
|
||||
• CreditMemoId: filters by unique transaction identifier
|
||||
• PurchaseOrderNumber: optional secondary filter used with CustomerAccountNumber
|
||||
• At least one identifier required (CustomerAccountNumber or CreditMemoId)
|
||||
Example Questions:
|
||||
• What parameters can I use to search for credit memos?
|
||||
• How do I query credit memos by purchase order number?
|
||||
• What is the structure of the credit memo query DTO?
|
||||
---
|
||||
Title: CreditMemoOicIntegration - GET Method
|
||||
Metadata:
|
||||
• module: CreditMemos
|
||||
• component: CreditMemoOicIntegration
|
||||
• type: component
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle OIC
|
||||
Content:
|
||||
Purpose: Retrieves credit memos from Oracle Integration Cloud with conditional query logic.
|
||||
Processing Logic:
|
||||
• Endpoint: "/ic/api/integration/v1/flows/rest/CHI_CREDITMEMO_API/1.0/CreditMemo"
|
||||
• If CustomerAccountNumber provided: appends CustomerAccountNumber query param, optionally appends PurchaseOrderNumber
|
||||
• Else if CreditMemoId provided: appends as "TransactionId" query param
|
||||
• Else throws ArgumentException "An Identifier is Required to GET Credit Memo"
|
||||
• Parses JSON response, extracts "ARCreditMemos" array
|
||||
• Returns List<CreditMemo> or empty list if null
|
||||
Example Questions:
|
||||
• What Oracle OIC endpoint retrieves credit memos?
|
||||
• How does the API validate credit memo search criteria?
|
||||
• What JSON property contains the credit memo array in responses?
|
||||
---
|
||||
Title: CreditMemoOicIntegration - POST Method
|
||||
Metadata:
|
||||
• module: CreditMemos
|
||||
• component: CreditMemoOicIntegration
|
||||
• type: component
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle OIC
|
||||
Content:
|
||||
Purpose: Posts credit memo to Oracle Integration Cloud.
|
||||
Processing Logic:
|
||||
• Endpoint: "/ic/api/integration/v1/flows/rest/CHI_CREDITMEMO_API/1.0/CreditMemo"
|
||||
• Serializes CreditMemo to JSON using Newtonsoft.Json
|
||||
• Sets Content-Type header to "application/json"
|
||||
• Posts via Flurl PostStringAsync
|
||||
• Deserializes response to CreditMemo
|
||||
• Returns created credit memo with Oracle-assigned values
|
||||
Example Questions:
|
||||
• What Oracle OIC endpoint is used for posting credit memos?
|
||||
• How are credit memos serialized for Oracle integration?
|
||||
• What is the return value from the Oracle credit memo API?
|
||||
---
|
||||
Title: Credit Memo Query - Conditional Parameter Logic
|
||||
Metadata:
|
||||
• module: CreditMemos
|
||||
• component: CreditMemoOicIntegration
|
||||
• type: workflow
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle OIC
|
||||
Content:
|
||||
Purpose: Implements conditional query parameter logic for credit memo retrieval.
|
||||
Processing Logic:
|
||||
1. Check if CustomerAccountNumber is provided (not null/empty)
|
||||
• If yes: append CustomerAccountNumber query param
|
||||
• Check if PurchaseOrderNumber is provided
|
||||
• If yes: append PurchaseOrderNumber query param
|
||||
2. Else check if CreditMemoId is provided (not null/empty)
|
||||
• If yes: append as "TransactionId" query param
|
||||
3. Else throw ArgumentException
|
||||
Key Rules:
|
||||
• CustomerAccountNumber is primary search method
|
||||
• PurchaseOrderNumber only valid with CustomerAccountNumber
|
||||
• CreditMemoId maps to "TransactionId" query parameter
|
||||
• At least one identifier required
|
||||
Example Questions:
|
||||
• How does the credit memo API determine which query parameters to use?
|
||||
• Can I search credit memos by purchase order alone?
|
||||
• What happens if no search criteria are provided?
|
||||
---
|
||||
Title: Credit Memo Selection - Most Recent by Transaction Date
|
||||
Metadata:
|
||||
• module: CreditMemos
|
||||
• component: CreditMemoLambda
|
||||
• type: workflow
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Selects most recent valid cancellation credit memo from a collection.
|
||||
Processing Logic:
|
||||
1. Validate input list not null or empty (return null if invalid)
|
||||
2. Filter credit memos where TransactionType matches AllowedTypes ("HFA CM Cancel Int" or "HFA CM Cancel Ext")
|
||||
3. Order filtered results by TransactionDate descending
|
||||
4. Return FirstOrDefault (most recent or null)
|
||||
Key Rules:
|
||||
• TransactionDate is sorting key
|
||||
• Only cancellation types considered
|
||||
• Returns null if no valid credit memos found
|
||||
Example Questions:
|
||||
• How does the system determine the most recent credit memo?
|
||||
• What sorting is applied to credit memo selection?
|
||||
• What happens when no valid credit memos exist?
|
||||
@@ -0,0 +1,178 @@
|
||||
Title: MapInstallmentSequenceLambda - Map Method
|
||||
Metadata:
|
||||
• module: InvoiceInstallments
|
||||
• component: MapInstallmentSequenceLambda
|
||||
• type: component
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Finds installment sequence by matching installment ID from a collection.
|
||||
Processing Logic:
|
||||
• Accepts MapInstallmentSequenceDto containing InstallmentId and Installments list
|
||||
• Validates InstallmentId is not null/empty, throws ArgumentNullException if invalid
|
||||
• Validates Installments list is not null, throws ArgumentNullException if invalid
|
||||
• Uses FirstOrDefault to find installment where InstallmentId matches
|
||||
• Returns InstallmentSequence as string, or null if no match found
|
||||
• Lambda configuration: 256MB memory, 30s timeout
|
||||
Example Questions:
|
||||
• How do I find an installment sequence by installment ID?
|
||||
• What Lambda method maps installment IDs to sequence numbers?
|
||||
• What validation is performed on installment mapping inputs?
|
||||
---
|
||||
Title: GetInvoiceWithInstallments Lambda - Handler Method
|
||||
Metadata:
|
||||
• module: InvoiceInstallments
|
||||
• component: GetInvoiceWithInstallments
|
||||
• type: component
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Retrieves invoice and associated installments for a customer policy.
|
||||
Processing Logic:
|
||||
• Accepts InvoiceInstallmentsDto with PolicyNumber and AccountNumber
|
||||
• Deconstructs DTO to extract policy and account number
|
||||
• Creates GetInvoicesDto with PolicyNumber and CustomerAccountNumber
|
||||
• Calls IOracleInvoiceIntegration.GetInvoicesAsync to retrieve invoices
|
||||
• Throws exception "Invoice not found" if invoices null or empty
|
||||
• Selects first invoice from results (invoices[0])
|
||||
• Calls IInstallmentIntegration.GetAsync with invoice.TransactionID
|
||||
• Returns new Invoice object combining OracleInvoice and installments
|
||||
Example Questions:
|
||||
• How do I retrieve an invoice with its installments?
|
||||
• What happens when no invoice is found for a policy number?
|
||||
• What integrations are used to fetch invoice and installment data?
|
||||
---
|
||||
Title: InvoiceInstallmentsDto
|
||||
Metadata:
|
||||
• module: InvoiceInstallments
|
||||
• component: InvoiceInstallmentsDto
|
||||
• type: concept
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Input DTO for retrieving invoice with installments, with deconstruction support.
|
||||
Processing Logic:
|
||||
• PolicyNumber: string identifier for the policy
|
||||
• AccountNumber: string customer account identifier
|
||||
• Deconstruct method: extracts PolicyNumber and AccountNumber as tuple
|
||||
• Validates PolicyNumber not null during deconstruction, throws ArgumentNullException
|
||||
• Validates AccountNumber not null during deconstruction, throws ArgumentNullException
|
||||
• Enables tuple-style assignment: (string policy, string account) = dto
|
||||
Example Questions:
|
||||
• What input parameters are needed to retrieve invoice with installments?
|
||||
• How does InvoiceInstallmentsDto support tuple deconstruction?
|
||||
• What validation occurs during DTO deconstruction?
|
||||
---
|
||||
Title: MapInstallmentSequenceDto
|
||||
Metadata:
|
||||
• module: InvoiceInstallments
|
||||
• component: MapInstallmentSequenceDto
|
||||
• type: concept
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Input DTO for mapping installment ID to sequence number.
|
||||
Processing Logic:
|
||||
• InstallmentId: string identifier for the target installment
|
||||
• Installments: List<Installment> collection to search within
|
||||
• Both properties are nullable
|
||||
• Validation performed in consuming Lambda (MapInstallmentSequenceLambda)
|
||||
Example Questions:
|
||||
• What properties are needed to map installment sequence?
|
||||
• How is the installment collection provided for sequence mapping?
|
||||
• Is MapInstallmentSequenceDto validated in the DTO or Lambda?
|
||||
---
|
||||
Title: Invoice Model (InvoiceInstallments Module)
|
||||
Metadata:
|
||||
• module: InvoiceInstallments
|
||||
• component: Invoice
|
||||
• type: concept
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Extended invoice model combining OracleInvoice properties with installments collection.
|
||||
Processing Logic:
|
||||
• Inherits from OracleInvoice base class
|
||||
• Adds Installments property: IEnumerable<Installment>
|
||||
• Constructor accepts OracleInvoice and installments collection
|
||||
• Copies all OracleInvoice properties: TransactionID, TransactionType, TransactionNumber, DocumentNumber, TransactionDate, AccountingDate, PaymentTerms, DueDate, Comments, PurchaseOrderNumber, ProductType, PremiumPayable, InstallmentFee, PhysicalAddressState, PolicyTermOriginalInvoice, CustomerAccountNumber, SitePurposeSiteNumber, TransactionStatus, PrintStatus, InvoiceBalanceAmount, TransactionLines, CreatedOn
|
||||
• Assigns Installments collection
|
||||
Example Questions:
|
||||
• How is an invoice model extended to include installments?
|
||||
• What properties are copied from OracleInvoice to the extended Invoice model?
|
||||
• How do I combine invoice and installment data in a single object?
|
||||
---
|
||||
Title: Invoice with Installments Retrieval Workflow
|
||||
Metadata:
|
||||
• module: InvoiceInstallments
|
||||
• component: GetInvoiceWithInstallments
|
||||
• type: workflow
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Orchestrates retrieval of invoice and installments from Oracle integrations.
|
||||
Processing Logic:
|
||||
1. Receive InvoiceInstallmentsDto with PolicyNumber and AccountNumber
|
||||
2. Deconstruct DTO to extract values
|
||||
3. Build GetInvoicesDto request
|
||||
4. Call invoice integration to retrieve invoices by policy and account
|
||||
5. Validate invoice collection not null/empty
|
||||
6. Extract first invoice from results
|
||||
7. Call installment integration with invoice.TransactionID
|
||||
8. Construct extended Invoice model with OracleInvoice data and installments
|
||||
9. Return combined Invoice object
|
||||
Key Rules:
|
||||
• Always uses first invoice if multiple returned
|
||||
• Throws exception if no invoices found
|
||||
Example Questions:
|
||||
• What is the step-by-step process for retrieving invoice with installments?
|
||||
• How are invoice and installment data combined?
|
||||
• What happens if multiple invoices match the policy number?
|
||||
---
|
||||
Title: Installment Sequence Lookup Rule
|
||||
Metadata:
|
||||
• module: InvoiceInstallments
|
||||
• component: MapInstallmentSequenceLambda
|
||||
• type: rule
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Defines matching logic for finding installment sequence by ID.
|
||||
Processing Logic:
|
||||
• Uses LINQ FirstOrDefault to search installments collection
|
||||
• Matches on InstallmentId equality (i.InstallmentId == mapInstallmentSequenceDto.InstallmentId)
|
||||
• Extracts InstallmentSequence property from matched installment
|
||||
• Converts InstallmentSequence integer to string via ToString()
|
||||
• Returns null if no matching installment found
|
||||
Key Rules:
|
||||
• Exact match on InstallmentId required
|
||||
• Returns null (not exception) for no match
|
||||
• Sequence converted to string for return
|
||||
Example Questions:
|
||||
• How is installment ID matched to find sequence?
|
||||
• What is returned when no matching installment ID is found?
|
||||
• How is the installment sequence formatted for return?
|
||||
---
|
||||
Title: InvoiceInstallmentsDto Deconstruction Pattern
|
||||
Metadata:
|
||||
• module: InvoiceInstallments
|
||||
• component: InvoiceInstallmentsDto
|
||||
• type: rule
|
||||
• domain: Accounts Receivable
|
||||
• system: Oracle AR
|
||||
Content:
|
||||
Purpose: Implements tuple deconstruction for extracting policy and account numbers.
|
||||
Processing Logic:
|
||||
• Deconstruct method signature: out string policyNumber, out string accountNumber
|
||||
• Validates PolicyNumber not null before assignment, throws ArgumentNullException if null
|
||||
• Validates AccountNumber not null before assignment, throws ArgumentNullException if null
|
||||
• Assigns PolicyNumber to policyNumber out parameter
|
||||
• Assigns AccountNumber to accountNumber out parameter
|
||||
• Enables syntax: (string policy, string account) = dto
|
||||
Key Rules:
|
||||
• Validation occurs during deconstruction, not construction
|
||||
• Both properties required (no null allowed)
|
||||
Example Questions:
|
||||
• How does InvoiceInstallmentsDto support C# deconstruction syntax?
|
||||
• When are PolicyNumber and AccountNumber validated?
|
||||
• What exception is thrown for null policy or account numbers?
|
||||
30
Books/Music/Song Queues/Seans Mission.txt
Normal file
30
Books/Music/Song Queues/Seans Mission.txt
Normal file
@@ -0,0 +1,30 @@
|
||||
Seans Mission
|
||||
Chunk 1: Introduction
|
||||
Metadata:
|
||||
<EFBFBD> theme: rocket on launch pad preparing for flight, birds flying, gentle ocean swells nearby, the rocket is tall, the engines are steaming.
|
||||
<EFBFBD> emotion: quiet
|
||||
<EFBFBD> character: ephemeral
|
||||
|
||||
Chunk 2: The Inciting Incident
|
||||
Metadata:
|
||||
<EFBFBD> theme: final system checks, preparation, crew strapping in, buttons being pressed
|
||||
<EFBFBD> emotion: anticipation
|
||||
<EFBFBD> character: excitement
|
||||
|
||||
Chunk 3: Rising Action
|
||||
Metadata:
|
||||
<EFBFBD> theme: the countdown begins, the control room brims with talk as last minute systems are checked.
|
||||
<EFBFBD> emotion: adrenaline rush
|
||||
<EFBFBD> character: fear mixed with excitement and hope
|
||||
|
||||
Chunk 4: The Turning Point
|
||||
Metadata:
|
||||
<EFBFBD> theme: Launch. The engines burst alive. The rocket lifts from the pad. The tower releases and swings away.
|
||||
<EFBFBD> emotion: euphoria
|
||||
<EFBFBD> character: the hope that the liftoff goes well
|
||||
|
||||
Chunk 5: Resolution
|
||||
Metadata:
|
||||
<EFBFBD> theme: The rocket soars away, gaining speed and momentum. Bursting through the clouds. The contrail it leaves behind.
|
||||
<EFBFBD> emotion: happiness, thrill of success,
|
||||
<EFBFBD> character: optimism for the future of all mankind.
|
||||
27
Books/Music/Song Queues/The Strong Willed Man.txt
Normal file
27
Books/Music/Song Queues/The Strong Willed Man.txt
Normal file
@@ -0,0 +1,27 @@
|
||||
The Strong Willed Man
|
||||
Chunk 1: The Setup
|
||||
Metadata:
|
||||
<EFBFBD> theme: awakens, tired, struggle out of bed
|
||||
<EFBFBD> emotion: another day, tired
|
||||
<EFBFBD> character: pick yourself up
|
||||
Chunk 2: The Inciting Incident
|
||||
Metadata:
|
||||
<EFBFBD> theme: rainy, lightning, storm clouds swirling, flashes of light
|
||||
<EFBFBD> emotion: caution, impending doom
|
||||
<EFBFBD> character: the will to face it
|
||||
Chunk 3: Rising Action
|
||||
Metadata:
|
||||
<EFBFBD> theme: storm coming closer, blinding lightning, gale winds
|
||||
<EFBFBD> emotion: turn back, can't make it
|
||||
<EFBFBD> character: too much to overcome
|
||||
Chunk 4: The Turning Point
|
||||
Metadata:
|
||||
<EFBFBD> theme: clouds parting, winds die down
|
||||
<EFBFBD> emotion: elation, happiness
|
||||
<EFBFBD> character: boldness
|
||||
Chunk 5: Resolution
|
||||
Metadata:
|
||||
<EFBFBD> theme: sunshine, blue sky
|
||||
<EFBFBD> emotion: resolve
|
||||
<EFBFBD> character: stand string
|
||||
|
||||
30
Books/Music/Song Queues/The Undecided Man.txt
Normal file
30
Books/Music/Song Queues/The Undecided Man.txt
Normal file
@@ -0,0 +1,30 @@
|
||||
The Undecided Man
|
||||
Chunk 1: Introduction
|
||||
Metadata:
|
||||
<EFBFBD> theme: melodic introduction with harmonic notes
|
||||
<EFBFBD> emotion: quiet
|
||||
<EFBFBD> character: ephemeral
|
||||
|
||||
Chunk 2: The Inciting Incident
|
||||
Metadata:
|
||||
<EFBFBD> theme: focuses on the inner world of the boy.
|
||||
<EFBFBD> emotion: concern
|
||||
<EFBFBD> character: distress
|
||||
|
||||
Chunk 3: Rising Action
|
||||
Metadata:
|
||||
<EFBFBD> theme: growing unrest and despair at his inability to integrate socially. Makes bad decisions
|
||||
<EFBFBD> emotion: growing concern
|
||||
<EFBFBD> character: disturbed
|
||||
|
||||
Chunk 4: The Turning Point
|
||||
Metadata:
|
||||
<EFBFBD> theme: he's always in trouble. Can't quite get it right. Can't think things through.
|
||||
<EFBFBD> emotion: futility
|
||||
<EFBFBD> character: giving up.
|
||||
|
||||
Chunk 5: Resolution
|
||||
Metadata:
|
||||
<EFBFBD> theme: comes around and becomes a man. Growing his life. Getting things right.
|
||||
<EFBFBD> emotion: happiness
|
||||
<EFBFBD> character: resolve
|
||||
Reference in New Issue
Block a user