Class ExportService

java.lang.Object
ru.bgcrm.dao.CommonDAO
org.bgerp.plugin.inventory.sync1c.service.ExportService

public class ExportService extends CommonDAO
Service for managing the export queue and sending write-offs to 1C.
  • Constructor Details

    • ExportService

      public ExportService(Connection con)
  • Method Details

    • enqueue

      public void enqueue(int processId) throws SQLException
      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 an entry to the export queue. Duplicate (process_id, instance_id) entries are silently ignored. Does NOT commit — caller is responsible.
      Throws:
      SQLException
    • sendExportQueue

      public ExportService.SendResult sendExportQueue(ExportQueue q) throws SQLException
      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) throws SQLException
      Resolves the write-off items (product_id + quantity) for a process's active reserves, protocol-agnostic — used both by the HS sender (sendExportQueue(ExportQueue)) and by the File-protocol CSV export.
      Throws:
      SQLException
    • createWriteoffMovements

      public void createWriteoffMovements(int processId) throws SQLException
      Creates writeoff movements in ERP for all active reserves of the process. 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. Does NOT commit — caller is responsible.
      Parameters:
      processId - the process whose reserves were written off
      Throws:
      SQLException
    • reverseWriteoffMovements

      public void reverseWriteoffMovements(int processId) throws SQLException
      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