From fa3dcd3b25be4dfbf0794796da9db8e0ba984c55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20=C5=9Eent=C3=BCrk?= Date: Tue, 10 Mar 2020 15:02:19 +0300 Subject: [PATCH] invoice and bill item create.. --- app/Listeners/Update/V20/Version205.php | 100 ++++++++++++++++++++++++ app/Providers/Event.php | 1 + 2 files changed, 101 insertions(+) create mode 100644 app/Listeners/Update/V20/Version205.php diff --git a/app/Listeners/Update/V20/Version205.php b/app/Listeners/Update/V20/Version205.php new file mode 100644 index 000000000..3c68064d4 --- /dev/null +++ b/app/Listeners/Update/V20/Version205.php @@ -0,0 +1,100 @@ +skipThisUpdate($event)) { + return; + } + + $this->items = []; + + $this->updateBillItems(); + + $this->updateInvoiceItems(); + } + + protected function updateBillItems() + { + $bill_items = DB::table('bill_items')->whereNull('deleted_at')->where('item_id', 0)->cursor(); + + foreach ($bill_items as $bill_item) { + $item_id = $this->getItemId($bill_item); + + DB::table('bill_items') + ->where('id', $bill_item->id) + ->update(['item_id' => $item_id]); + } + } + + protected function updateInvoiceItems() + { + $invoice_items = DB::table('invoice_items')->whereNull('deleted_at')->where('item_id', 0)->cursor(); + + foreach ($invoice_items as $invoice_item) { + $item_id = $this->getItemId($invoice_item); + + DB::table('invoice_items') + ->where('id', $invoice_item->id) + ->update(['item_id' => $item_id]); + + DB::table('items') + ->where('id', $item_id) + ->update(['sales_price' => $invoice_item->price]); + } + } + + protected function getItemId($item) + { + // Set category_id for company. + if (!isset($this->categories[$item->company_id])) { + $this->categories[$item->company_id] = DB::table('categories')->where('company_id', $item->company_id)->where('type', 'item')->first()->id; + } + + // Return set item_id for item name. + if (isset($this->items[$item->company_id]) && in_array($item->name, $this->items[$item->company_id])) { + return array_search($item->name, $this->items[$item->company_id]); + } + + // Insert new item. + $item_id = DB::table('items')->insertGetId([ + 'company_id' => $item->company_id, + 'name' => $item->name, + 'description' => null, + 'sale_price' => $item->price, + 'purchase_price' => $item->price, + 'category_id' => $this->categories[$item->company_id], + 'tax_id' => null, + 'enabled' => 1, + 'created_at' => $item->created_at, + 'updated_at' => $item->updated_at, + 'deleted_at' => null, + ]); + + // Set item_id for item name. + $this->items[$item->company_id][$item_id] = $item->name; + + return $item_id; + } +} diff --git a/app/Providers/Event.php b/app/Providers/Event.php index 42d2af107..22c0704ec 100644 --- a/app/Providers/Event.php +++ b/app/Providers/Event.php @@ -16,6 +16,7 @@ class Event extends Provider 'App\Listeners\Update\CreateModuleUpdatedHistory', 'App\Listeners\Update\V20\Version200', 'App\Listeners\Update\V20\Version203', + 'App\Listeners\Update\V20\Version205', ], 'Illuminate\Auth\Events\Login' => [ 'App\Listeners\Auth\Login',