diff --git a/api/v1/products/product_model.php b/api/v1/products/product_model.php new file mode 100644 index 000000000..32344ccb2 --- /dev/null +++ b/api/v1/products/product_model.php @@ -0,0 +1,50 @@ + 'name', + 'product_type' => 'type', + 'product_category_id' => 'category', + 'product_price' => 'price', + 'product_cost' => 'cost', + 'product_tax_id' => 'tax', + 'product_frequency' => 'frequency', + 'product_seat_source' => 'seat_source', + 'product_code' => 'code', + 'product_vendor_id' => 'vendor', + 'product_vendor_part' => 'vendor_part', + 'product_reorder_level' => 'reorder_level', + 'product_reorder_qty' => 'reorder_qty', + 'product_location' => 'location', + 'product_asset_type' => 'asset_type', + 'product_make' => 'make', + 'product_model' => 'model', + 'product_warranty_months' => 'warranty_months', + 'product_description' => 'description', + 'product_notes' => 'notes', + 'product_track_stock' => 'track_stock', +]; + +$product_input = []; +$product_model_error = ''; + +foreach ($field_names as $api_field => $key) { + if (!array_key_exists($api_field, $_POST)) { + continue; + } + if (!is_scalar($_POST[$api_field]) && $_POST[$api_field] !== null) { + $product_model_error = "The $api_field field must be a scalar value."; + break; + } + + $value = (string) ($_POST[$api_field] ?? ''); + if ($key === 'track_stock') { + $value = in_array(strtolower(trim($value)), ['1', 'true', 'yes', 'on', 'tracked'], true); + } + $product_input[$key] = $value; +} + +// The product form posts the stock switch with the type, including when it is off. +if (array_key_exists('type', $product_input) && !array_key_exists('track_stock', $product_input)) { + $product_input['track_stock'] = false; +} diff --git a/api/v1/products/update.php b/api/v1/products/update.php new file mode 100644 index 000000000..63f841305 --- /dev/null +++ b/api/v1/products/update.php @@ -0,0 +1,60 @@ +