Explorar el Código

fix: sales master

Muhammad Iqbal Afandi hace 3 años
padre
commit
2cc01a38e5

+ 8
- 3
app/Http/Controllers/SalesController.php Ver fichero

6
 use App\Http\Requests\Sales\UpdateSaleRequest;
6
 use App\Http\Requests\Sales\UpdateSaleRequest;
7
 use App\Models\Customer;
7
 use App\Models\Customer;
8
 use App\Models\Ppn;
8
 use App\Models\Ppn;
9
-use App\Models\Product;
10
 use App\Models\Sale;
9
 use App\Models\Sale;
11
 use App\Models\StockProduct;
10
 use App\Models\StockProduct;
12
 use Illuminate\Database\QueryException;
11
 use Illuminate\Database\QueryException;
64
                 fn() => Customer::filter(['search' => request('customer')])
63
                 fn() => Customer::filter(['search' => request('customer')])
65
                     ->get()
64
                     ->get()
66
             ),
65
             ),
67
-            'products' => Inertia::lazy(
68
-                fn() => Product::filter(['search' => request('product')])
66
+            'stockProducts' => Inertia::lazy(
67
+                fn() => StockProduct::filter(['search' => request('stockProduct')])
69
                     ->get()
68
                     ->get()
69
+                    ->transform(fn($stockProduct) => [
70
+                        'number' => $stockProduct->product_number,
71
+                        'name' => $stockProduct->product->name,
72
+                        'qty' => $stockProduct->qty,
73
+                        'unit' => $stockProduct->product->unit
74
+                    ])
70
             )
75
             )
71
         ]);
76
         ]);
72
     }
77
     }

+ 15
- 0
app/Models/StockProduct.php Ver fichero

15
         'qty',
15
         'qty',
16
         'product_number'
16
         'product_number'
17
     ];
17
     ];
18
+
19
+    public function product()
20
+    {
21
+        return $this->belongsTo(Product::class, 'product_number', 'number');
22
+    }
23
+
24
+    public function scopeFilter($query, array $filters)
25
+    {
26
+        $query->when($filters['search'] ?? null, function ($query, $search) {
27
+            $query->whereHas('product', function ($query) use ($search) {
28
+                $query->where('number', 'like', '%' . $search . '%')
29
+                    ->orWhere('name', 'like', '%' . $search . '%');
30
+            });
31
+        });
32
+    }
18
 }
33
 }

+ 3
- 3
public/js/resources_js_pages_Sales_Create_vue.js Ver fichero

725
       type: Array,
725
       type: Array,
726
       "default": []
726
       "default": []
727
     },
727
     },
728
-    products: {
728
+    stockProducts: {
729
       type: Array,
729
       type: Array,
730
       "default": []
730
       "default": []
731
     }
731
     }
1964
             label: "Produk",
1964
             label: "Produk",
1965
             placeholder: "produk",
1965
             placeholder: "produk",
1966
             field: "name",
1966
             field: "name",
1967
-            "refresh-data": "products",
1967
+            "refresh-data": "stockProducts",
1968
             modelValue: $setup.form.product,
1968
             modelValue: $setup.form.product,
1969
             "onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
1969
             "onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
1970
               return $setup.form.product = $event;
1970
               return $setup.form.product = $event;
1971
             }),
1971
             }),
1972
             error: $setup.form.errors.product_number,
1972
             error: $setup.form.errors.product_number,
1973
-            suggestions: $props.products
1973
+            suggestions: $props.stockProducts
1974
           }, null, 8
1974
           }, null, 8
1975
           /* PROPS */
1975
           /* PROPS */
1976
           , ["modelValue", "error", "suggestions"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_10, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup["AppInputNumber"], {
1976
           , ["modelValue", "error", "suggestions"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_10, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup["AppInputNumber"], {

+ 1
- 1
public/js/vue.js Ver fichero

58892
 /******/ 		// This function allow to reference async chunks
58892
 /******/ 		// This function allow to reference async chunks
58893
 /******/ 		__webpack_require__.u = (chunkId) => {
58893
 /******/ 		__webpack_require__.u = (chunkId) => {
58894
 /******/ 			// return url for filenames based on template
58894
 /******/ 			// return url for filenames based on template
58895
-/******/ 			return "js/" + chunkId + ".js?id=" + {"node_modules_chart_js_auto_auto_esm_js":"9296b829a7757dee","resources_js_pages_Auth_Login_vue":"be578e085a239e29","resources_js_pages_Customers_Create_vue":"abaff1c86032fcae","resources_js_pages_Customers_Edit_vue":"f1a4e333a99c31c9","resources_js_pages_Customers_Index_vue":"c0c3f38312c2d2c9","resources_js_pages_Customers_config_js":"3e69b9c9add806c6","resources_js_pages_Dashboards_Index_vue":"169709cb2487d435","resources_js_pages_Error_Index_vue":"4119ff1c60260652","resources_js_pages_PPN_Index_vue":"2f8e2992ec6659f2","resources_js_pages_Products_Create_vue":"8ccf815689cc3e57","resources_js_pages_Products_Edit_vue":"beff000cbc64de7a","resources_js_pages_Products_Index_vue":"0cdaeead21afa302","resources_js_pages_Products_config_js":"885a5522b0477687","resources_js_pages_Purchases_Components_Details_vue":"555481fa9ad2bb55","resources_js_pages_Purchases_Components_Dialog_ProductCreate_vue":"817a7620a7ed339e","resources_js_pages_Purchases_Components_Dialog_SupplierCreate_vue":"47234f8cf23670bd","resources_js_pages_Purchases_Create_vue":"2f2cb3769cdb38c7","resources_js_pages_Purchases_Edit_vue":"fc65461b74c755fb","resources_js_pages_Purchases_Index_vue":"023de8bce59a7f62","resources_js_pages_Purchases_config_js":"1231ca1a86b64fe0","resources_js_pages_Sales_Components_Details_vue":"ab6208d2dfc40d03","resources_js_pages_Sales_Components_Dialog_CustomerCreate_vue":"0e45b005d2175423","resources_js_pages_Sales_Create_vue":"493bd3b1567e3832","resources_js_pages_Sales_Edit_vue":"8feb19293450be1a","resources_js_pages_Sales_Index_vue":"1c64f3da4b2cf3bd","resources_js_pages_Sales_config_js":"b0e1bf081e7ceb77","resources_js_pages_StockProducts_Index_vue":"adab1491dd4bbdc3","resources_js_pages_Suppliers_Create_vue":"cc4cadba106e4d6f","resources_js_pages_Suppliers_Edit_vue":"b3e685e95f8c88aa","resources_js_pages_Suppliers_Index_vue":"8164a3c7fed7a6bb","resources_js_pages_Suppliers_config_js":"52e8d25c6bfab54b","resources_js_pages_Users_Create_vue":"3dba09b22200339d","resources_js_pages_Users_Edit_vue":"4872b69d62eda692","resources_js_pages_Users_Index_vue":"befb159bdb05f5db","resources_js_pages_Users_Show_vue":"d36db8c57efef81d","resources_js_pages_Users_config_js":"92384d78612abc88"}[chunkId] + "";
58895
+/******/ 			return "js/" + chunkId + ".js?id=" + {"node_modules_chart_js_auto_auto_esm_js":"9296b829a7757dee","resources_js_pages_Auth_Login_vue":"be578e085a239e29","resources_js_pages_Customers_Create_vue":"abaff1c86032fcae","resources_js_pages_Customers_Edit_vue":"f1a4e333a99c31c9","resources_js_pages_Customers_Index_vue":"c0c3f38312c2d2c9","resources_js_pages_Customers_config_js":"3e69b9c9add806c6","resources_js_pages_Dashboards_Index_vue":"169709cb2487d435","resources_js_pages_Error_Index_vue":"4119ff1c60260652","resources_js_pages_PPN_Index_vue":"2f8e2992ec6659f2","resources_js_pages_Products_Create_vue":"8ccf815689cc3e57","resources_js_pages_Products_Edit_vue":"beff000cbc64de7a","resources_js_pages_Products_Index_vue":"0cdaeead21afa302","resources_js_pages_Products_config_js":"885a5522b0477687","resources_js_pages_Purchases_Components_Details_vue":"555481fa9ad2bb55","resources_js_pages_Purchases_Components_Dialog_ProductCreate_vue":"817a7620a7ed339e","resources_js_pages_Purchases_Components_Dialog_SupplierCreate_vue":"47234f8cf23670bd","resources_js_pages_Purchases_Create_vue":"2f2cb3769cdb38c7","resources_js_pages_Purchases_Edit_vue":"fc65461b74c755fb","resources_js_pages_Purchases_Index_vue":"023de8bce59a7f62","resources_js_pages_Purchases_config_js":"1231ca1a86b64fe0","resources_js_pages_Sales_Components_Details_vue":"ab6208d2dfc40d03","resources_js_pages_Sales_Components_Dialog_CustomerCreate_vue":"0e45b005d2175423","resources_js_pages_Sales_Create_vue":"4406047541e5f0ad","resources_js_pages_Sales_Edit_vue":"8feb19293450be1a","resources_js_pages_Sales_Index_vue":"1c64f3da4b2cf3bd","resources_js_pages_Sales_config_js":"b0e1bf081e7ceb77","resources_js_pages_StockProducts_Index_vue":"adab1491dd4bbdc3","resources_js_pages_Suppliers_Create_vue":"cc4cadba106e4d6f","resources_js_pages_Suppliers_Edit_vue":"b3e685e95f8c88aa","resources_js_pages_Suppliers_Index_vue":"8164a3c7fed7a6bb","resources_js_pages_Suppliers_config_js":"52e8d25c6bfab54b","resources_js_pages_Users_Create_vue":"3dba09b22200339d","resources_js_pages_Users_Edit_vue":"4872b69d62eda692","resources_js_pages_Users_Index_vue":"befb159bdb05f5db","resources_js_pages_Users_Show_vue":"d36db8c57efef81d","resources_js_pages_Users_config_js":"92384d78612abc88"}[chunkId] + "";
58896
 /******/ 		};
58896
 /******/ 		};
58897
 /******/ 	})();
58897
 /******/ 	})();
58898
 /******/ 	
58898
 /******/ 	

+ 3
- 3
resources/js/pages/Sales/Create.vue Ver fichero

17
     type: Array,
17
     type: Array,
18
     default: [],
18
     default: [],
19
   },
19
   },
20
-  products: {
20
+  stockProducts: {
21
     type: Array,
21
     type: Array,
22
     default: [],
22
     default: [],
23
   },
23
   },
142
                   label="Produk"
142
                   label="Produk"
143
                   placeholder="produk"
143
                   placeholder="produk"
144
                   field="name"
144
                   field="name"
145
-                  refresh-data="products"
145
+                  refresh-data="stockProducts"
146
                   v-model="form.product"
146
                   v-model="form.product"
147
                   :error="form.errors.product_number"
147
                   :error="form.errors.product_number"
148
-                  :suggestions="products"
148
+                  :suggestions="stockProducts"
149
                 />
149
                 />
150
               </div>
150
               </div>
151
 
151