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 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 • 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.