@@ -47,7 +47,6 @@ discard block |
||
47 | 47 | * @ORM\Id |
48 | 48 | * @ORM\GeneratedValue(strategy="IDENTITY") |
49 | 49 | * @Groups({"product:read","product_group_product:read","product_group:read","product_unity:read"}) |
50 | - |
|
51 | 50 | */ |
52 | 51 | private $id; |
53 | 52 | |
@@ -56,7 +55,6 @@ discard block |
||
56 | 55 | * |
57 | 56 | * @ORM\Column(name="product_unit", type="string", length=3, nullable=false) |
58 | 57 | * @Groups({"product:read","product_group_product:read","product_group:read","product_unity:read"}) |
59 | - |
|
60 | 58 | */ |
61 | 59 | private $productUnit; |
62 | 60 |
@@ -29,15 +29,15 @@ |
||
29 | 29 | #[ApiResource( |
30 | 30 | operations: [ |
31 | 31 | new Get(security: 'is_granted(\'ROLE_ADMIN\') or is_granted(\'ROLE_CLIENT\')'), |
32 | - new Put(security: 'is_granted(\'ROLE_CLIENT\')', denormalizationContext: ['groups' => ['product_unity_edit']]), |
|
32 | + new Put(security: 'is_granted(\'ROLE_CLIENT\')', denormalizationContext: [ 'groups' => [ 'product_unity_edit' ] ]), |
|
33 | 33 | new Delete(security: 'is_granted(\'ROLE_CLIENT\')'), |
34 | 34 | new Post(securityPostDenormalize: 'is_granted(\'ROLE_CLIENT\')'), |
35 | 35 | new GetCollection(security: 'is_granted(\'ROLE_ADMIN\') or is_granted(\'ROLE_CLIENT\')') |
36 | 36 | ], |
37 | - formats: ['jsonld', 'json', 'html', 'jsonhal', 'csv' => ['text/csv']], |
|
38 | - normalizationContext: ['groups' => ['product_unity:read']], |
|
39 | - denormalizationContext: ['groups' => ['product_unity:write']] |
|
40 | -)] |
|
37 | + formats: [ 'jsonld', 'json', 'html', 'jsonhal', 'csv' => [ 'text/csv' ] ], |
|
38 | + normalizationContext: [ 'groups' => [ 'product_unity:read' ] ], |
|
39 | + denormalizationContext: [ 'groups' => [ 'product_unity:write' ] ] |
|
40 | +) ] |
|
41 | 41 | class ProductUnity |
42 | 42 | { |
43 | 43 | /** |
@@ -26,16 +26,16 @@ discard block |
||
26 | 26 | new Get(security: 'is_granted(\'ROLE_ADMIN\') or is_granted(\'ROLE_CLIENT\')'), |
27 | 27 | new Put( |
28 | 28 | security: 'is_granted(\'ROLE_CLIENT\')', |
29 | - denormalizationContext: ['groups' => ['product_file:write']] |
|
29 | + denormalizationContext: [ 'groups' => [ 'product_file:write' ] ] |
|
30 | 30 | ), |
31 | 31 | new Delete(security: 'is_granted(\'ROLE_CLIENT\')'), |
32 | 32 | new Post(securityPostDenormalize: 'is_granted(\'ROLE_CLIENT\')'), |
33 | 33 | new GetCollection(security: 'is_granted(\'ROLE_ADMIN\') or is_granted(\'ROLE_CLIENT\')') |
34 | 34 | ], |
35 | - formats: ['jsonld', 'json', 'html', 'jsonhal', 'csv' => ['text/csv']], |
|
36 | - normalizationContext: ['groups' => ['product_file:read']], |
|
37 | - denormalizationContext: ['groups' => ['product_file:write']] |
|
38 | -)] |
|
35 | + formats: [ 'jsonld', 'json', 'html', 'jsonhal', 'csv' => [ 'text/csv' ] ], |
|
36 | + normalizationContext: [ 'groups' => [ 'product_file:read' ] ], |
|
37 | + denormalizationContext: [ 'groups' => [ 'product_file:write' ] ] |
|
38 | +) ] |
|
39 | 39 | class ProductFile |
40 | 40 | { |
41 | 41 | /** |
@@ -57,8 +57,8 @@ discard block |
||
57 | 57 | * }) |
58 | 58 | * @Groups({"product:read","order_product:read","product_file:read","product_file:write","product_category:read"}) |
59 | 59 | */ |
60 | - #[ApiFilter(filterClass: SearchFilter::class, properties: ['file' => 'exact'])] |
|
61 | - #[ApiFilter(filterClass: SearchFilter::class, properties: ['file.fileType' => 'exact'])] |
|
60 | + #[ApiFilter(filterClass: SearchFilter::class, properties: [ 'file' => 'exact' ]) ] |
|
61 | + #[ApiFilter(filterClass: SearchFilter::class, properties: [ 'file.fileType' => 'exact' ]) ] |
|
62 | 62 | |
63 | 63 | private $file; |
64 | 64 | |
@@ -71,7 +71,7 @@ discard block |
||
71 | 71 | * }) |
72 | 72 | * @Groups({"product_file:read","product_file:write"}) |
73 | 73 | */ |
74 | - #[ApiFilter(filterClass: SearchFilter::class, properties: ['product' => 'exact'])] |
|
74 | + #[ApiFilter(filterClass: SearchFilter::class, properties: [ 'product' => 'exact' ]) ] |
|
75 | 75 | |
76 | 76 | private $product; |
77 | 77 |
@@ -97,7 +97,6 @@ discard block |
||
97 | 97 | * |
98 | 98 | * @ORM\Column(name="quantity", type="float", precision=10, scale=2, nullable=false, options={"default"="1.00"}) |
99 | 99 | * @Groups({"product_group_product:read","product_group:write","product_group_product:write"}) |
100 | - |
|
101 | 100 | */ |
102 | 101 | private $quantity = 0; |
103 | 102 | |
@@ -106,7 +105,6 @@ discard block |
||
106 | 105 | * |
107 | 106 | * @ORM\Column(name="price", type="float", precision=10, scale=2, nullable=false) |
108 | 107 | * @Groups({"product_group_product:read","product_group:write","product_group_product:write"}) |
109 | - |
|
110 | 108 | */ |
111 | 109 | private $price = 0; |
112 | 110 | |
@@ -115,7 +113,6 @@ discard block |
||
115 | 113 | * |
116 | 114 | * @ORM\Column(name="active", type="boolean", nullable=false, options={"default"="1"}) |
117 | 115 | * @Groups({"product_group_product:read","product_group:write","product_group_product:write"}) |
118 | - |
|
119 | 116 | */ |
120 | 117 | private $active = true; |
121 | 118 |
@@ -25,18 +25,18 @@ discard block |
||
25 | 25 | new Get(security: 'is_granted(\'IS_AUTHENTICATED_ANONYMOUSLY\')',), |
26 | 26 | new Put( |
27 | 27 | security: 'is_granted(\'ROLE_CLIENT\')', |
28 | - denormalizationContext: ['groups' => ['product_group_product:write']] |
|
28 | + denormalizationContext: [ 'groups' => [ 'product_group_product:write' ] ] |
|
29 | 29 | ), |
30 | 30 | new Delete(security: 'is_granted(\'ROLE_CLIENT\')'), |
31 | 31 | new Post(securityPostDenormalize: 'is_granted(\'ROLE_CLIENT\')'), |
32 | 32 | new GetCollection(security: 'is_granted(\'IS_AUTHENTICATED_ANONYMOUSLY\')',) |
33 | 33 | ], |
34 | - formats: ['jsonld', 'json', 'html', 'jsonhal', 'csv' => ['text/csv']], |
|
35 | - normalizationContext: ['groups' => ['product_group_product:read']], |
|
36 | - denormalizationContext: ['groups' => ['product_group_product:write']] |
|
37 | -)] |
|
34 | + formats: [ 'jsonld', 'json', 'html', 'jsonhal', 'csv' => [ 'text/csv' ] ], |
|
35 | + normalizationContext: [ 'groups' => [ 'product_group_product:read' ] ], |
|
36 | + denormalizationContext: [ 'groups' => [ 'product_group_product:write' ] ] |
|
37 | +) ] |
|
38 | 38 | |
39 | -#[ApiFilter(OrderFilter::class, properties: ['productGroup.productGroup' => 'ASC', 'product.product' => 'ASC'])] |
|
39 | +#[ApiFilter(OrderFilter::class, properties: [ 'productGroup.productGroup' => 'ASC', 'product.product' => 'ASC' ]) ] |
|
40 | 40 | |
41 | 41 | class ProductGroupProduct |
42 | 42 | { |
@@ -48,7 +48,7 @@ discard block |
||
48 | 48 | * @ORM\GeneratedValue(strategy="IDENTITY") |
49 | 49 | * @Groups({"product_group_product:read","product_group:write","product_group_product:write"}) |
50 | 50 | */ |
51 | - #[ApiFilter(filterClass: SearchFilter::class, properties: ['id' => 'exact'])] |
|
51 | + #[ApiFilter(filterClass: SearchFilter::class, properties: [ 'id' => 'exact' ]) ] |
|
52 | 52 | |
53 | 53 | private $id; |
54 | 54 | |
@@ -59,7 +59,7 @@ discard block |
||
59 | 59 | * @ORM\JoinColumn(name="product_id", referencedColumnName="id", nullable=false) |
60 | 60 | * @Groups({"product_group_product:read","product_group:write","product_group_product:write"}) |
61 | 61 | */ |
62 | - #[ApiFilter(filterClass: SearchFilter::class, properties: ['product' => 'exact'])] |
|
62 | + #[ApiFilter(filterClass: SearchFilter::class, properties: [ 'product' => 'exact' ]) ] |
|
63 | 63 | |
64 | 64 | private $product; |
65 | 65 | |
@@ -70,7 +70,7 @@ discard block |
||
70 | 70 | * @ORM\JoinColumn(name="product_group_id", referencedColumnName="id", nullable=true) |
71 | 71 | * @Groups({"product_group_product:read","product_group:write","product_group_product:write"}) |
72 | 72 | */ |
73 | - #[ApiFilter(filterClass: SearchFilter::class, properties: ['productGroup' => 'exact'])] |
|
73 | + #[ApiFilter(filterClass: SearchFilter::class, properties: [ 'productGroup' => 'exact' ]) ] |
|
74 | 74 | |
75 | 75 | private $productGroup; |
76 | 76 | |
@@ -80,7 +80,7 @@ discard block |
||
80 | 80 | * @ORM\Column(name="product_type", type="string", columnDefinition="ENUM('feedstock', 'component', 'package')", nullable=false) |
81 | 81 | * @Groups({"product_group_product:read","product_group:write","product_group_product:write"}) |
82 | 82 | */ |
83 | - #[ApiFilter(filterClass: SearchFilter::class, properties: ['productType' => 'exact'])] |
|
83 | + #[ApiFilter(filterClass: SearchFilter::class, properties: [ 'productType' => 'exact' ]) ] |
|
84 | 84 | |
85 | 85 | private $productType; |
86 | 86 |
@@ -18,7 +18,7 @@ |
||
18 | 18 | RequestStack $requestStack |
19 | 19 | |
20 | 20 | ) { |
21 | - $this->request = $requestStack->getCurrentRequest(); |
|
21 | + $this->request = $requestStack->getCurrentRequest(); |
|
22 | 22 | } |
23 | 23 | |
24 | 24 |
@@ -26,17 +26,17 @@ discard block |
||
26 | 26 | new Get(security: 'is_granted(\'ROLE_ADMIN\') or is_granted(\'ROLE_CLIENT\')'), |
27 | 27 | new Put( |
28 | 28 | security: 'is_granted(\'ROLE_CLIENT\')', |
29 | - denormalizationContext: ['groups' => ['product_category:write']] |
|
29 | + denormalizationContext: [ 'groups' => [ 'product_category:write' ] ] |
|
30 | 30 | ), |
31 | 31 | new Delete(security: 'is_granted(\'ROLE_CLIENT\')'), |
32 | 32 | new Post(securityPostDenormalize: 'is_granted(\'ROLE_CLIENT\')'), |
33 | 33 | new GetCollection(security: 'is_granted(\'ROLE_ADMIN\') or is_granted(\'ROLE_CLIENT\')') |
34 | 34 | ], |
35 | - formats: ['jsonld', 'json', 'html', 'jsonhal', 'csv' => ['text/csv']], |
|
36 | - normalizationContext: ['groups' => ['product_category:read']], |
|
37 | - denormalizationContext: ['groups' => ['product_category:write']] |
|
38 | -)] |
|
39 | -#[ApiFilter(OrderFilter::class, properties: ['product.product'])] |
|
35 | + formats: [ 'jsonld', 'json', 'html', 'jsonhal', 'csv' => [ 'text/csv' ] ], |
|
36 | + normalizationContext: [ 'groups' => [ 'product_category:read' ] ], |
|
37 | + denormalizationContext: [ 'groups' => [ 'product_category:write' ] ] |
|
38 | +) ] |
|
39 | +#[ApiFilter(OrderFilter::class, properties: [ 'product.product' ]) ] |
|
40 | 40 | |
41 | 41 | class ProductCategory |
42 | 42 | { |
@@ -59,9 +59,9 @@ discard block |
||
59 | 59 | * }) |
60 | 60 | * @Groups({"product_category:read","product_category:write"}) |
61 | 61 | */ |
62 | - #[ApiFilter(filterClass: SearchFilter::class, properties: ['category' => 'exact'])] |
|
63 | - #[ApiFilter(filterClass: SearchFilter::class, properties: ['category.company' => 'exact'])] |
|
64 | - #[ApiFilter(filterClass: SearchFilter::class, properties: ['category.context' => 'exact'])] |
|
62 | + #[ApiFilter(filterClass: SearchFilter::class, properties: [ 'category' => 'exact' ]) ] |
|
63 | + #[ApiFilter(filterClass: SearchFilter::class, properties: [ 'category.company' => 'exact' ]) ] |
|
64 | + #[ApiFilter(filterClass: SearchFilter::class, properties: [ 'category.context' => 'exact' ]) ] |
|
65 | 65 | |
66 | 66 | private $category; |
67 | 67 | |
@@ -74,7 +74,7 @@ discard block |
||
74 | 74 | * }) |
75 | 75 | * @Groups({"product_category:read","product_category:write"}) |
76 | 76 | */ |
77 | - #[ApiFilter(filterClass: SearchFilter::class, properties: ['product' => 'exact'])] |
|
77 | + #[ApiFilter(filterClass: SearchFilter::class, properties: [ 'product' => 'exact' ]) ] |
|
78 | 78 | |
79 | 79 | private $product; |
80 | 80 |
@@ -29,17 +29,17 @@ discard block |
||
29 | 29 | new Get(security: 'is_granted(\'IS_AUTHENTICATED_ANONYMOUSLY\')',), |
30 | 30 | new Put( |
31 | 31 | security: 'is_granted(\'ROLE_CLIENT\')', |
32 | - denormalizationContext: ['groups' => ['product_group:write']] |
|
32 | + denormalizationContext: [ 'groups' => [ 'product_group:write' ] ] |
|
33 | 33 | ), |
34 | 34 | new Delete(security: 'is_granted(\'ROLE_CLIENT\')'), |
35 | 35 | new Post(securityPostDenormalize: 'is_granted(\'ROLE_CLIENT\')'), |
36 | 36 | new GetCollection(security: 'is_granted(\'IS_AUTHENTICATED_ANONYMOUSLY\')',) |
37 | 37 | ], |
38 | - formats: ['jsonld', 'json', 'html', 'jsonhal', 'csv' => ['text/csv']], |
|
39 | - normalizationContext: ['groups' => ['product_group:read']], |
|
40 | - denormalizationContext: ['groups' => ['product_group:write']] |
|
41 | -)] |
|
42 | -#[ApiFilter(OrderFilter::class, properties: ['productGroup'])] |
|
38 | + formats: [ 'jsonld', 'json', 'html', 'jsonhal', 'csv' => [ 'text/csv' ] ], |
|
39 | + normalizationContext: [ 'groups' => [ 'product_group:read' ] ], |
|
40 | + denormalizationContext: [ 'groups' => [ 'product_group:write' ] ] |
|
41 | +) ] |
|
42 | +#[ApiFilter(OrderFilter::class, properties: [ 'productGroup' ]) ] |
|
43 | 43 | |
44 | 44 | class ProductGroup |
45 | 45 | { |
@@ -51,7 +51,7 @@ discard block |
||
51 | 51 | * @ORM\GeneratedValue(strategy="IDENTITY") |
52 | 52 | * @Groups({"product_group:read","product_group:write","order_product:read"}) |
53 | 53 | */ |
54 | - #[ApiFilter(filterClass: SearchFilter::class, properties: ['id' => 'exact'])] |
|
54 | + #[ApiFilter(filterClass: SearchFilter::class, properties: [ 'id' => 'exact' ]) ] |
|
55 | 55 | private $id; |
56 | 56 | |
57 | 57 | /** |
@@ -60,7 +60,7 @@ discard block |
||
60 | 60 | * @ORM\Column(name="product_group", type="string", length=255, nullable=false) |
61 | 61 | * @Groups({"product_group:read","product_group:write","order_product:read"}) |
62 | 62 | */ |
63 | - #[ApiFilter(filterClass: SearchFilter::class, properties: ['productGroup' => 'exact'])] |
|
63 | + #[ApiFilter(filterClass: SearchFilter::class, properties: [ 'productGroup' => 'exact' ]) ] |
|
64 | 64 | |
65 | 65 | private $productGroup; |
66 | 66 | |
@@ -70,7 +70,7 @@ discard block |
||
70 | 70 | * @ORM\Column(name="price_calculation", type="string", length=0, nullable=false, options={"default"="'sum'"}) |
71 | 71 | * @Groups({"product_group:read","product_group:write","order_product:read"}) |
72 | 72 | */ |
73 | - #[ApiFilter(filterClass: SearchFilter::class, properties: ['priceCalculation' => 'exact'])] |
|
73 | + #[ApiFilter(filterClass: SearchFilter::class, properties: [ 'priceCalculation' => 'exact' ]) ] |
|
74 | 74 | |
75 | 75 | private $priceCalculation = 'sum'; |
76 | 76 | |
@@ -128,7 +128,7 @@ discard block |
||
128 | 128 | * @ORM\JoinColumn(nullable=false) |
129 | 129 | * @Groups({"product_group:read","product_group:write"}) |
130 | 130 | */ |
131 | - #[ApiFilter(filterClass: SearchFilter::class, properties: ['productParent' => 'exact'])] |
|
131 | + #[ApiFilter(filterClass: SearchFilter::class, properties: [ 'productParent' => 'exact' ]) ] |
|
132 | 132 | |
133 | 133 | private $productParent; |
134 | 134 | |
@@ -292,7 +292,7 @@ discard block |
||
292 | 292 | public function addProduct(ProductGroupProduct $product): self |
293 | 293 | { |
294 | 294 | if (!$this->products->contains($product)) { |
295 | - $this->products[] = $product; |
|
295 | + $this->products[ ] = $product; |
|
296 | 296 | $product->setProductGroup($this); |
297 | 297 | } |
298 | 298 |
@@ -24,17 +24,17 @@ |
||
24 | 24 | #[ApiResource( |
25 | 25 | operations: [ |
26 | 26 | new Get(security: 'is_granted(\'IS_AUTHENTICATED_ANONYMOUSLY\')'), |
27 | - new Put(security: 'is_granted(\'ROLE_CLIENT\')', denormalizationContext: ['groups' => ['inventory:write']]), |
|
27 | + new Put(security: 'is_granted(\'ROLE_CLIENT\')', denormalizationContext: [ 'groups' => [ 'inventory:write' ] ]), |
|
28 | 28 | new Delete(security: 'is_granted(\'ROLE_CLIENT\')'), |
29 | 29 | new Post(securityPostDenormalize: 'is_granted(\'ROLE_CLIENT\')'), |
30 | 30 | new GetCollection(security: 'is_granted(\'IS_AUTHENTICATED_ANONYMOUSLY\')'), |
31 | 31 | ], |
32 | - formats: ['jsonld', 'json', 'html', 'jsonhal', 'csv' => ['text/csv']], |
|
33 | - normalizationContext: ['groups' => ['inventory:read']], |
|
34 | - denormalizationContext: ['groups' => ['inventory:write']] |
|
35 | -)] |
|
36 | -#[ApiFilter(OrderFilter::class, properties: ['inventory', 'type'])] |
|
37 | -#[ApiFilter(SearchFilter::class, properties: ['id' => 'exact', 'inventory' => 'partial', 'type' => 'exact', 'people' => 'exact'])] |
|
32 | + formats: [ 'jsonld', 'json', 'html', 'jsonhal', 'csv' => [ 'text/csv' ] ], |
|
33 | + normalizationContext: [ 'groups' => [ 'inventory:read' ] ], |
|
34 | + denormalizationContext: [ 'groups' => [ 'inventory:write' ] ] |
|
35 | +) ] |
|
36 | +#[ApiFilter(OrderFilter::class, properties: [ 'inventory', 'type' ]) ] |
|
37 | +#[ApiFilter(SearchFilter::class, properties: [ 'id' => 'exact', 'inventory' => 'partial', 'type' => 'exact', 'people' => 'exact' ]) ] |
|
38 | 38 | class Inventory |
39 | 39 | { |
40 | 40 | /** |
@@ -26,17 +26,17 @@ |
||
26 | 26 | #[ApiResource( |
27 | 27 | operations: [ |
28 | 28 | new Get(security: 'is_granted(\'IS_AUTHENTICATED_ANONYMOUSLY\')'), |
29 | - new Put(security: 'is_granted(\'ROLE_CLIENT\')', denormalizationContext: ['groups' => ['product_inventory:write']]), |
|
29 | + new Put(security: 'is_granted(\'ROLE_CLIENT\')', denormalizationContext: [ 'groups' => [ 'product_inventory:write' ] ]), |
|
30 | 30 | new Delete(security: 'is_granted(\'ROLE_CLIENT\')'), |
31 | 31 | new Post(securityPostDenormalize: 'is_granted(\'ROLE_CLIENT\')'), |
32 | 32 | new GetCollection(security: 'is_granted(\'IS_AUTHENTICATED_ANONYMOUSLY\')'), |
33 | 33 | ], |
34 | - formats: ['jsonld', 'json', 'html', 'jsonhal', 'csv' => ['text/csv']], |
|
35 | - normalizationContext: ['groups' => ['product_inventory:read']], |
|
36 | - denormalizationContext: ['groups' => ['product_inventory:write']] |
|
37 | -)] |
|
38 | -#[ApiFilter(OrderFilter::class, properties: ['id', 'available', 'sales', 'ordered', 'transit'])] |
|
39 | -#[ApiFilter(SearchFilter::class, properties: ['id' => 'exact', 'inventory' => 'exact', 'product' => 'exact', 'productUnity' => 'exact'])] |
|
34 | + formats: [ 'jsonld', 'json', 'html', 'jsonhal', 'csv' => [ 'text/csv' ] ], |
|
35 | + normalizationContext: [ 'groups' => [ 'product_inventory:read' ] ], |
|
36 | + denormalizationContext: [ 'groups' => [ 'product_inventory:write' ] ] |
|
37 | +) ] |
|
38 | +#[ApiFilter(OrderFilter::class, properties: [ 'id', 'available', 'sales', 'ordered', 'transit' ]) ] |
|
39 | +#[ApiFilter(SearchFilter::class, properties: [ 'id' => 'exact', 'inventory' => 'exact', 'product' => 'exact', 'productUnity' => 'exact' ]) ] |
|
40 | 40 | class ProductInventory |
41 | 41 | { |
42 | 42 | /** |
@@ -101,8 +101,9 @@ |
||
101 | 101 | $this->peopleService->getMyCompanies() |
102 | 102 | ); |
103 | 103 | |
104 | - if ($company) |
|
105 | - $qb->andWhere('pe = :company')->setParameter('company', $company); |
|
104 | + if ($company) { |
|
105 | + $qb->andWhere('pe = :company')->setParameter('company', $company); |
|
106 | + } |
|
106 | 107 | |
107 | 108 | error_log($qb->getQuery()->getSQL()); |
108 | 109 | return $qb->getQuery()->getResult(); |
@@ -19,7 +19,7 @@ discard block |
||
19 | 19 | class ProductRepository extends ServiceEntityRepository |
20 | 20 | { |
21 | 21 | |
22 | - private $inventory_exclude_types = ['custom', 'component', 'manufactured']; |
|
22 | + private $inventory_exclude_types = [ 'custom', 'component', 'manufactured' ]; |
|
23 | 23 | |
24 | 24 | public function __construct( |
25 | 25 | private PeopleService $peopleService, |
@@ -37,7 +37,7 @@ discard block |
||
37 | 37 | |
38 | 38 | try { |
39 | 39 | $conn = $this->getEntityManager()->getConnection(); |
40 | - $conn->executeStatement('CALL update_product_inventory(?)', [$companies]); |
|
40 | + $conn->executeStatement('CALL update_product_inventory(?)', [ $companies ]); |
|
41 | 41 | } catch (\Exception $e) { |
42 | 42 | throw new \Exception($e->getMessage()); |
43 | 43 | } |