SQL-023: Ebill batch status update to Completed (EbillBatch)¶
Batch.SetBatchToCompleted sets the batch's Status property to the "COMP" status code, one of the eight status setters (COMP/EXTR/IMAGE/INDEX/EOB/DLOAD/ACK/SETUP) defined on Batch. The UPDATE runs via NHibernate dirty-check detection when the caller's IUnitOfWork flushes*.
Classification¶
| Field | Value |
|---|---|
| SQL ID | SQL-023 |
| Operation type | Update* |
| Execution method | ORM (dirty-check flush*) |
| Database | Oracle* |
| Schema | [unqualified]** |
| Command type | N/A — ORM (NHibernate generates SQL at runtime from the ClassMaps in Data/SAIF.Data.NHibernate/Mappings/**) |
| Business object | Batch |
| Criteria property | N/A — ORM |
| Lifecycle method | SetBatchToCompleted |
Tables¶
| Table | Access | Columns used |
|---|---|---|
| EBILL_BATCH | UPDATE | UPDATE_NUM, CREATE_DATE, SUBMISSION_DATE, UPDATE_DATE, UPDATE_USER, CLEARINGHOUSE_FILE_NAME, EBILL_BATCH_TYPE_CODE, RESPONSE_BATCH_SEQ_NUM, EBILL_BATCH_STATUS_CODE, PAYMENT_TRANS_STAT_SEQ_NUM, EBILL_CLEARINGHOUSE_SEQ_NUM, EBILL_BATCH_SEQ_NUM |
LINQ statement¶
Source: Domain/SAIF.Domain/Model/Claims/Ebilling/Batch.cs:189
// Domain/SAIF.Domain/Model/Claims/Ebilling/Batch.cs:187-191
public void SetBatchToCompleted()
{
DataItem.Status = _ebillingQueryProvider.BatchQueries.GetBatchStatus("COMP");
SetUpdateInfo();
}
// Domain/SAIF.Domain/Model/Claims/Ebilling/Batch.cs:234-238
private void SetUpdateInfo()
{
Data.UpdateDate = DateTime.Now;
Data.UpdateUser = profileService.GetCurrentUser().UserId;
}
Sample SQL¶
Inferred SQL: This SQL was inferred from the LINQ statement above and the NHibernate mappings. It is not concrete SQL from source code; NHibernate generates the executed statement at runtime, so aliases, column order, join syntax, and bind-parameter names may differ.
-- Inferred from LINQ (NHibernate mapping translation); not concrete SQL
UPDATE EBILL_BATCH
SET
UPDATE_NUM = :newVersion,
CREATE_DATE = :CreateDate,
SUBMISSION_DATE = :SubmissionDate,
UPDATE_DATE = :UpdateDate,
UPDATE_USER = :UpdateUser,
CLEARINGHOUSE_FILE_NAME = :ClearinghouseFileName,
EBILL_BATCH_TYPE_CODE = :Type,
RESPONSE_BATCH_SEQ_NUM = :ResponseBatch,
EBILL_BATCH_STATUS_CODE = :Status,
PAYMENT_TRANS_STAT_SEQ_NUM = :PaymentStatistic,
EBILL_CLEARINGHOUSE_SEQ_NUM = :Clearinghouse
WHERE EBILL_BATCH_SEQ_NUM = :Id
AND UPDATE_NUM = :oldVersion
Translation notes:
- No explicit Update() call: under the stateful strategy RepositoryBase.Update is a no-op and the UPDATE is emitted by NHibernate dirty-checking at Commit() flush (Legends: SAIF.Framework.Data.NHibernate RepositoryBase / business-rules). The mapping declares no DynamicUpdate(), so NHibernate sends every updatable mapped column, not only the ones changed here.
- Version UPDATE_NUM (EbillBatchMap.cs:12): SET UPDATE_NUM = :newVersion ... AND UPDATE_NUM = :oldVersion.
- Bind variables for References carry the referenced entity's identifier; values not changed by this call site are re-sent unchanged.
- The C# code assigns DateTime.Now client-side before flush; the value is bound as an ordinary parameter (no server date function).
- GetBatchStatus("COMP") is a separate read; :Status carries status code COMP. The sibling SetBatchTo* methods (lines 193-227) produce the same UPDATE shape with other codes.
- Prior page named the column STATUS; the mapped column is EBILL_BATCH_STATUS_CODE (EbillBatchMap.cs:15).
Operations and processes¶
- OP-DOM-09 Batch lifecycle — status setters COMP, EXTR, IMAGE, INDEX, EOB, DLOAD, ACK, SETUP (see Operations and processes)
Business rules¶
Note: Statements marked with
*were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with**could not be confirmed; treat as unknown until verified.
Sources¶
- Domain/SAIF.Domain/Model/Claims/Ebilling/Batch.cs