M3 Integration fixes

This commit is contained in:
Mark Gregory
2026-09-21 10:14:57 +01:00
parent 4af997c465
commit 6d60cbff84
5853 changed files with 79032 additions and 1825 deletions
View File
+96
View File
@@ -0,0 +1,96 @@
<?php
// M3 now uses Core's PostgreSQL connection. No per-user DB credentials are required.
return [
// 'nonWorkingHourCode' => ['73,85,89,90,91,92,86,99'],
'autorefresh_all' => ['00:15'],
'autorefresh_notall' => ['00:15'],
'payrollCodes' => ['33,49,75,94,98,102,171'],
'min_work_hours_for_break' => ['4'],
'ignore_picks_that_last_longer_than_this_many_hours' => ['8'],
'env_ports' => ['test' => '10004', 'live' => '10005'],
'hold_code_array' => ['A' => 'Admin Hold',
'C' => 'AR Past Due',
'D' => 'Over Credit Limit',
'E' => 'Over Order Limit',
'F' => 'Address Check Fail',
'Q' => 'Quote Hold',
'H' => 'A/R Cust Hold',
'I' => 'EDI Hold',
'P' => 'EDI Price Hold',
'Z' => 'Haz Hold',
'X' => 'CID Hold',
'W' => 'Web Hold',
'T' => 'Duplicate Hold'],
'user_array' => '', // $user_array,
'misc' => [
'discountCarrierRateForCustomerPriceLTL' => 0.00, // This is the percent off list that we want to charge customers
'discountCarrierRateForCustomerPriceParcel' => 0.00, // This is the percent off list that we want to charge customers - to use in ship confirm
],
'transxTypes' => [
'ICM710E' => 'Splitting delivery orders',
'ICM710E13' => 'Pre-Splitting interco delivery orders',
'ICM710E12' => 'Pre-Splitting customer delivery orders',
'M3InventoryReportListURL' => 'Retrieve inventory on hand',
'M3InventoryReportReplen' => 'Retrieve Replenishments',
'M3ReceiverAPI' => 'Post Splitting delivery orders',
'PdfStorageAPI' => 'PDF document storage',
'PackSyst4tray' => 'Change of qty picked after picking',
'CloseShipmentCoChargeAPI' => 'Closing delivery orders',
'TransferAPIURL' => 'Move goods to Pack/Dock locations',
'OP705API' => 'Closing a manifest',
'CloseShipmentCoChargeAPIMfest' => 'Batch closing for M3 manifests at night',
'M3-General' => 'General - contact MPBA',
'UpdateShipmentNumber' => 'Update Shipment Number',
],
'curlTimeOut' => 30,
'PHPTimeOut' => 600,
'PHPTimeOutCL' => 1000,
'maxRecDL' => 20000,
'maxRecCL' => 55000,
'BadChars' => ['–', '\t', '\n', '\u20134807', '\u20131', '\u201333', '\u2013671', 'Ÿ', 'á', 'é', 'í', 'ó', 'ú', '“', '”'],
'PdfPath' => env('M3_LABELS_PATH', storage_path('app/m3/labels') . DIRECTORY_SEPARATOR), // Warning : The path for PDF storage is shared by all Instances and should not be altered
'DUMMYPDF' => '',
'uom_size' => ['110-142-303' => 'mm',
'110-143-321' => 'mm',
'110-143-322' => 'in'], // unit of mesure for boxes lengths mm or in
'uom_wt' => ['110-142-303' => 'kg',
'110-143-321' => 'kg',
'110-143-322' => 'lbs'], // unit of mesure for boxes weight kg or lbs
// STATUS ARRAY FOR ICM688M1
'status_ICM688M1_array' => [
'P' => 'Pending error checking by splitting (OP510E2)',
'H' => 'Hold as error found (OP510E3)',
'L' => 'Ready to pick',
'I' => 'In picking',
'F' => 'In packing',
'X' => 'Cancelled',
'C' => 'Packed',
'B' => 'Loaded',
'a' => 'Manually removed from Sentinel ship confirm screen',
'A' => 'ShipConfirmed'],
'whsePerf_targets' => [
'all_notes' => '90', 'all_dollars' => '85', 'all_weight' => '90',
'ltl_notes' => '90', 'ltl_dollars' => '95', 'ltl_weight' => '99',
'parcel_notes' => '90', 'parcel_dollars' => '75', 'parcel_weight' => '80',
],
'2Ship' => [
// 2Ship WS_Key
// live $TwoShip_Key="FED945D1-5DC7-415E-BDAB-16347E7C1304";
// test $TwoShip_Key="45027F2A-EDA6-4C16-8AD4-9BC70CE94AB8";
'TwoShip_Key' => '45027F2A-EDA6-4C16-8AD4-9BC70CE94AB8',
'end_point' => 'https://euroapi.2ship.com/api/',
'hold_update' => 'UpdateOnHoldOrder_V1',
],
];
+37
View File
@@ -0,0 +1,37 @@
<?php
// PayRollCodes are the keys (left) to read LBPF, lines per hours (right)
return [
'lph_per_code_array' => ['16' => '30',
'33' => '12',
'49' => '25',
'66' => '60',
'75' => '15',
'94' => '40',
'98' => '8',
'102' => '10',
'171' => '17',
],
];
// '75'=>'26',
// '75'=>'23',
// '33'=>'13', #2025-08-04
// Found in BLDPERFST rpg pgm in EWRPGSRC / EWSRCTST
// PICKING stats
// when a5sentview in ('7','9') then 33
// when a5sentview = 5 then 49
// when a5sentview = 12 then 98
// when a5sentview in ('2','10') then 75
// when a5sentview in ('1','3','4','11') then 94
// when a5sentview = 8 then 102
// when a5sentview = 6 then 171
// else 999
// PACKING stats
// case when (select AYTYPE from ICM695M1
// where AYINTBOX=AZINTBOX
// and AYSENTPKR=AZSENTPKR FETCH FIRST ROW ONLY)
// in ('','BX') then '16' else '66' end as AYTYPE,
+8
View File
@@ -0,0 +1,8 @@
<?php
return [
'name' => 'M3',
'connection' => env('M3_DB_CONNECTION', env('DB_CONNECTION', 'pgsql')),
'labels_path' => env('M3_LABELS_PATH', storage_path('app/m3/labels')),
'closing_orders_path' => env('M3_CLOSING_ORDERS_PATH', storage_path('app/m3/closing-orders')),
];