diff --git a/app/Http/Controllers/ServiceController.php b/app/Http/Controllers/ServiceController.php index fd50053..cb316d7 100644 --- a/app/Http/Controllers/ServiceController.php +++ b/app/Http/Controllers/ServiceController.php @@ -412,7 +412,9 @@ class ServiceController extends Controller 'suspend_billing' => 'nullable|in:on', 'recur_schedule' => ['required',Rule::in(collect(Invoice::billing_periods)->keys())], 'invoice_next_at' => 'nullable|date', - 'price' => 'nullable|numeric', + 'price' => 'nullable|numeric|min:0', // Price we charge the client, if we dont charge supplied/price + 'cost' => 'nullable|numeric|min:0', // Price we are charged by supplier, if we arent charged supplier/price + 'supplierid' => 'nullable|string|min:1', // As used on invoices $o->product->category => 'array|min:1', ] ) @@ -456,6 +458,8 @@ class ServiceController extends Controller $o->suspend_billing = ($validated->get('suspend_billing') == 'on'); $o->external_billing = ($validated->get('external_billing') == 'on'); $o->price = $validated->get('price'); + $o->cost = $validated->get('cost'); + $o->supplierid = $validated->get('supplierid'); // Also update our service start_at date. // @todo We may want to make start_at/stop_at dynamic values calculated by the type records diff --git a/app/Models/Service.php b/app/Models/Service.php index d6388f0..3075f7d 100644 --- a/app/Models/Service.php +++ b/app/Models/Service.php @@ -955,13 +955,14 @@ class Service extends Model implements IDs /** * The amount we are charged for the client to have this service + * * @return float */ public function billing_cost(): float { return is_null($this->cost) ? $this->product->getBaseCostAttribute() - : $this->cost; + : $this->cost*Invoice::billing_change($this->product->type->billing_interval,$this->product->billing_interval); } /** @@ -1127,7 +1128,7 @@ class Service extends Model implements IDs public function isContract(): bool { - return $this->getContractEndAttribute()->greaterThan(Carbon::now()); + return $this->getContractEndAttribute() && $this->getContractEndAttribute()->greaterThan(Carbon::now()); } /** diff --git a/app/Models/Service/Broadband.php b/app/Models/Service/Broadband.php index 864ee15..93dd0dd 100644 --- a/app/Models/Service/Broadband.php +++ b/app/Models/Service/Broadband.php @@ -57,16 +57,6 @@ class Broadband extends Type implements ServiceUsage /* ATTRIBUTES */ - /** - * @deprecated use $o->service_name; - * @return mixed|string - */ - public function getNameAttribute() - { - abort(500,'deprecated - use $o->service_name'); - return $this->service_number ?: $this->service_address; - } - /** * The type of technology used to provide this Internet Service * @@ -104,15 +94,14 @@ class Broadband extends Type implements ServiceUsage /* METHODS */ /** - * Return the suppliers offering that this service is providing + * Return the supplier's offering that this service is providing * * @return SupplierType - * @todo This column provided_adsl_plan_id should either be deprecated or renamed. */ public function supplied(): SupplierType { - return $this->provided_adsl_plan_id - ? SupplierBroadband::findOrFail($this->provided_adsl_plan_id) + return $this->provided_supplier_broadband_id + ? SupplierBroadband::findOrFail($this->provided_supplier_broadband_id) : $this->service->offering->supplied; } diff --git a/database/migrations/2025_05_16_135847_add_cost.php b/database/migrations/2025_05_16_135847_add_cost.php new file mode 100644 index 0000000..48c7671 --- /dev/null +++ b/database/migrations/2025_05_16_135847_add_cost.php @@ -0,0 +1,30 @@ +float('cost')->nullable(); + $table->string('supplierid')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('service_broadband', function (Blueprint $table) { + $table->dropColumn('cost'); + $table->dropColumn('supplierid'); + }); + } +}; diff --git a/resources/views/theme/backend/adminlte/service/report.blade.php b/resources/views/theme/backend/adminlte/service/report.blade.php index b1d38bf..886b1f5 100644 --- a/resources/views/theme/backend/adminlte/service/report.blade.php +++ b/resources/views/theme/backend/adminlte/service/report.blade.php @@ -25,6 +25,7 @@