Class ImportService
java.lang.Object
ru.bgcrm.dao.CommonDAO
org.bgerp.plugin.inventoru.sync1c.service.ImportService
Imports stock data from 1C into BGERP inventory tables.
For each
EngineerWarehouse:
1. Calls Api1cClient.getStocks(warehouseName, locationName)
2. Upserts inventoru_item (by ext_id param = product_id)
3. Upserts inventoru_store (by ext_id param = warehouse_id), links to engineer_warehouse.store_id
4. Writes to inventoru_sync1c_import_pending (NOT directly to inventoru_balance).
The warehouse owner must confirm in user UI to apply balances.
5. Zeroes out items previously known at this store that are absent from the batch — per the
1C API contract, an exhausted (qty=0) item is omitted from the response entirely rather
than sent with quantity=0 (see ImportPendingDAO.getKnownItemIds(int, int)).-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordNested 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 TypeMethodDescriptionintimportBarcodes(Sync1cConnector instance) Imports the nomenclature barcode register from an OData connector into inventoru_item_barcode.intimportFromRows(Sync1cConnector instance, EngineerWarehouse ew, List<Api1cStock> stocks) Applies a list of stock rows (already fetched, protocol-agnostic — same shape regardless of whether they came from the HS API, a parsed CSV file, or (in the future) an inbound EPF push) for one engineer warehouse mapping: upserts item/store, writes to inventoru_sync1c_import_pending, logs to inventoru_sync1c_import_log.intimportFromRows(Sync1cConnector instance, EngineerWarehouse ew, List<Api1cStock> stocks, Set<String> untouched) receiveRows(Sync1cConnector instance, int storeId, List<Api1cStock> stocks, int userId) Receives the rows onto the store as they are: each is a receipt — the "add" mode of a file upload, for goods that came in.intsyncEngineerWarehouse(Sync1cConnector instance, EngineerWarehouse ew) Runs import for one engineer warehouse mapping over the connector's protocol: HS — Api1cClient.getStocks(warehouseName, locationName); OData — ODataClient with the mapping's warehouseId as the 1C warehouse GUID filter; mappings without a real GUID (e.g.Methods inherited from class CommonDAO
deleteById, foundRows, getById, getGroupedIds, getGroupedIds, getIds, getIds, getPageLimit, getPeriodSql, lastInsertId, setPeriodParamValue, setRecordCount, update, updateColumn, updateIds, updateIds, updateOrInsert
-
Constructor Details
-
ImportService
-
-
Method Details
-
syncEngineerWarehouse
Runs import for one engineer warehouse mapping over the connector's protocol: HS — Api1cClient.getStocks(warehouseName, locationName); OData — ODataClient with the mapping's warehouseId as the 1C warehouse GUID filter; mappings without a real GUID (e.g. manual ones) are skipped. Logs progress to inventoru_sync1c_import_log.- Returns:
- number of items synced; -1 on API error
-
importFromRows
Applies a list of stock rows (already fetched, protocol-agnostic — same shape regardless of whether they came from the HS API, a parsed CSV file, or (in the future) an inbound EPF push) for one engineer warehouse mapping: upserts item/store, writes to inventoru_sync1c_import_pending, logs to inventoru_sync1c_import_log.- Returns:
- number of items synced; -1 on error
-
importFromRows
public int importFromRows(Sync1cConnector instance, EngineerWarehouse ew, List<Api1cStock> stocks, Set<String> untouched) - Parameters:
untouched- product ids the source has but the person left out of this import (unticked in the preview): their positions are neither proposed nor taken for gone — before, leaving a row out made its position "missing" and proposed to zero it
-
importBarcodes
Imports the nomenclature barcode register from an OData connector into inventoru_item_barcode. Only barcodes whose item GUID resolves to an existing ERP item via the connector's ext_id parameter are stored — unknown items are skipped (they'll resolve on a later run, after the stock import has created them).- Returns:
- number of barcodes upserted; -1 on error
-
receiveRows
public ImportService.Received receiveRows(Sync1cConnector instance, int storeId, List<Api1cStock> stocks, int userId) throws Exception Receives the rows onto the store as they are: each is a receipt — the "add" mode of a file upload, for goods that came in. Not a reconciliation, so nothing is proposed and nothing absent is taken for gone. Positions are found or created as by the import. A serial tracked position is received unit by unit: a row needs its serial and a quantity of one, and a serial may appear once. All rows are checked before anything is written — a position is not even created — and the writes run in a savepoint rolled back on a refusal, so a refused file leaves nothing behind. Rows with no quantity are skipped and counted.- Throws:
Exception
-