public static function unitFor($mainUnit, $conversion, $shouldCreate = false) { $unit = Unit::where('main_unit', '=', $mainUnit)->where('conversion', '=', $conversion)->first(); if ($unit == null && $shouldCreate) { $unit = Unit::create(['main_unit' => $mainUnit, 'conversion' => $conversion, 'name' => $conversion . ' ' . Unit::getMainUnitName($mainUnit)]); } return $unit; }
public function assemblyPrice() { $price = 0; foreach ($this->assemblies as $assembly) { $finalQty = Unit::convert($assembly->pivot->quantity, $assembly->pivot->unit_id, $assembly->unit_id); $price += $assembly->costPrice * $finalQty; } return $price; }
/** * Run the migrations. * * @return void */ public function up() { Schema::create('units', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->integer('main_unit')->unsigned(); $table->decimal('conversion', 8, 3)->default(1); $table->timestamps(); $table->softDeletes(); }); DB::table('units')->delete(); Unit::insert([['name' => Unit::getMainUnitName(Unit::STANDARD), 'main_unit' => Unit::STANDARD, 'conversion' => 1], ['name' => Unit::getMainUnitName(Unit::KG), 'main_unit' => Unit::KG, 'conversion' => 1], ['name' => Unit::getMainUnitName(Unit::L), 'main_unit' => Unit::L, 'conversion' => 1], ['name' => Unit::getMainUnitName(Unit::LBS), 'main_unit' => Unit::LBS, 'conversion' => 1], ['name' => Unit::getMainUnitName(Unit::GAL), 'main_unit' => Unit::GAL, 'conversion' => 1], ['name' => 'g', 'main_unit' => Unit::KG, 'conversion' => 0.001], ['name' => 'cl', 'main_unit' => Unit::L, 'conversion' => 0.01], ['name' => 'Can 33 cl', 'main_unit' => Unit::L, 'conversion' => 0.33]]); }
public function automaticPurchaseOrder() { $toReturn = []; foreach ($this->items as $item) { $totalQty = 0; $totalDefault = 0; foreach ($item->warehouses as $warehouse) { $totalQty += $warehouse->pivot->quantity; $totalDefault += $warehouse->pivot->defaultQuantity; } $toRefill = $totalDefault - $totalQty; if ($toRefill > 0) { $toRefill = $item->pivot->pack * ceil($toRefill / $item->pivot->pack); //Minium pack size $toReturn[$item->id] = ["name" => $item->name, "costPrice" => $item->pivot->costPrice, "pivot_id" => $item->pivot->id, "quantity" => $toRefill, "unit" => Unit::find($item->pivot->unit_id)->name]; } } return $toReturn; }
public function move($itemId, $toWarehouseId, $qty) { $stockClass = config('mojito.stockClass', 'Stock'); $pivotFrom = $stockClass::where('warehouse_id', '=', $this->id)->where('item_id', '=', $itemId)->first(); if ($pivotFrom == null) { return false; } $pivotTo = $stockClass::where('warehouse_id', '=', $toWarehouseId)->where('item_id', '=', $itemId)->first(); if ($pivotTo != null) { $destQty = Unit::convert($qty, $pivotFrom->unit_id, $pivotTo->unit_id); } else { $destQty = $qty; } if ($pivotTo == null) { $stockClass::create(['warehouse_id' => $toWarehouseId, 'item_id' => $itemId, 'quantity' => $qty, 'unit_id' => $pivotFrom->unit_id, 'alert' => 0]); } else { $pivotTo->update(["quantity" => $pivotTo->quantity + $destQty]); } $pivotFrom->update(["quantity" => $pivotFrom->quantity - $qty]); StockMovement::create(['item_id' => $itemId, 'from_warehouse_id' => $this->id, 'to_warehouse_id' => $toWarehouseId, 'quantity' => $qty, 'action' => Warehouse::ACTION_MOVE]); return true; }
<?php return [[['field' => 'name'], ['field' => 'main_unit', 'select' => \BadChoice\Mojito\Models\Unit::getMainUnits()], ['field' => 'conversion']]];