Class ExportService
java.lang.Object
ru.bgcrm.dao.CommonDAO
org.bgerp.plugin.inventoru.sync1c.service.ExportService
Service for managing the export queue and sending write-offs to 1C.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordResult of a singlesendExportQueue(ExportQueue)attempt — carries the item count alongside the error so callers can log it (see inventoru_sync1c_export_log) without a secondbuildWriteoffItems(int, Sync1cConnector, int)lookup.static final recordOne line of what a queue entry covers, as a person needs to see it: the nomenclature by its title, the code 1C knows it by, and how much of it.Nested classes/interfaces inherited from class CommonDAO
CommonDAO.ObjectExtractor<T>, CommonDAO.RecordUpdater<T> -
Field Summary
Fields inherited from class CommonDAO
con, SQL_AND, SQL_DELETE, SQL_DELETE_FROM, SQL_DESC, SQL_DISTINCT, SQL_FROM, SQL_GROUP_BY, SQL_INNER_JOIN, SQL_INSERT_IGNORE_INTO, SQL_INSERT_INTO, SQL_LEFT_JOIN, SQL_LIMIT, SQL_ON_DUP_KEY_UPDATE, SQL_ORDER_BY, SQL_REPLACE, SQL_SELECT, SQL_SELECT_ALL_FROM, SQL_SELECT_COUNT_ROWS, SQL_SET, SQL_UNION_ALL, SQL_UPDATE, SQL_VALUES, SQL_VALUES_1, SQL_VALUES_2, SQL_VALUES_3, SQL_VALUES_4, SQL_VALUES_5, SQL_WHERE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbuildWriteoffItems(int processId, Sync1cConnector instance, int storeId) Resolves the write-off items (product_id + quantity) for a process's active reserves from ONE store, protocol-agnostic — used both by the HS sender (sendExportQueue(ExportQueue)) and by the File-protocol CSV export.buildWriteoffRows(int processId, Sync1cConnector instance, int storeId) Everything a queue entry covers — the CSV for 1C is the exportable part of this, and the screen showing the entry is all of it.voidcreateWriteoffMovements(int processId, int storeId) Creates writeoff movements in ERP for the active reserves of the process FROM ONE STORE.voidenqueue(int processId) Enqueues a write-off export for the given process.voidreverseWriteoffMovements(int processId) Reverses a previously exported write-off: returns the written-off quantity back to the engineer's store as plain stock (does not re-reserve — the process restarted from scratch, the engineer reserves again if/when they redo the work).Sends a queued write-off export to 1C over the HS protocol.Methods inherited from class CommonDAO
deleteById, foundRows, getById, getGroupedIds, getGroupedIds, getIds, getIds, getPageLimit, getPeriodSql, lastInsertId, setPeriodParamValue, setRecordCount, update, updateColumn, updateIds, updateIds, updateOrInsert
-
Constructor Details
-
ExportService
-
-
Method Details
-
enqueue
Enqueues a write-off export for the given process. For each reserve movement in the process, looks up the engineer warehouse by store_id and adds a pending entry to the export queue — except for OData instances, where the write-off is applied locally right away and the entry is recorded directly as 'success' (the protocol has no push channel to 1C). Duplicate (process_id, instance_id) entries are silently ignored. Does NOT commit — caller is responsible.- Throws:
SQLException
-
sendExportQueue
Sends a queued write-off export to 1C over the HS protocol.- Parameters:
q- the queue entry to process- Throws:
SQLException
-
buildWriteoffItems
public List<Api1cClient.WriteoffItem> buildWriteoffItems(int processId, Sync1cConnector instance, int storeId) throws SQLException Resolves the write-off items (product_id + quantity) for a process's active reserves from ONE store, protocol-agnostic — used both by the HS sender (sendExportQueue(ExportQueue)) and by the File-protocol CSV export. Scoped tostoreIdbecause a process can reserve from more than one store mapped to the same 1C instance — each gets its own queue entry/call.- Throws:
SQLException
-
buildWriteoffRows
public List<ExportService.WriteoffRow> buildWriteoffRows(int processId, Sync1cConnector instance, int storeId) throws SQLException Everything a queue entry covers — the CSV for 1C is the exportable part of this, and the screen showing the entry is all of it. Reserves are what an HS export sends: the write-off in ERP happens only after 1C accepted it. Where there is no push channel the ERP wrote the stock off at once, so the reserves are already gone and the same list has to be read off the write-offs.- Throws:
SQLException
-
createWriteoffMovements
Creates writeoff movements in ERP for the active reserves of the process FROM ONE STORE. Called after successful export to 1C so the ERP balance reflects the physical write-off. Updates both quantity and reserved via the "writeoff" balance rule. Scoped tostoreIdfor the same reason asbuildWriteoffItems(int, Sync1cConnector, int)— one export queue entry per store. Does NOT commit — caller is responsible.- Parameters:
processId- the process whose reserves were written offstoreId- the store whose reserves this particular export queue entry covered- Throws:
SQLException
-
reverseWriteoffMovements
Reverses a previously exported write-off: returns the written-off quantity back to the engineer's store as plain stock (does not re-reserve — the process restarted from scratch, the engineer reserves again if/when they redo the work). Uses "receipt" so only quantity changes, not reserved — a "return" movement would incorrectly touch reserved balance shared with other processes on the same item/store. No negative-balance guard: 1C-side reconciliation of the physical write-off is out of ERP's scope once the process owner decided to reopen the process. Marks the export queue entries as reversed so materials editing unlocks. Does NOT commit — caller is responsible.- Parameters:
processId- the process whose write-off is being reversed- Throws:
SQLException
-