Skip to content

Commit b2c57c9

Browse files
committed
update to elegantly money
1 parent 89b997e commit b2c57c9

15 files changed

+98
-21
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"require": {
2020
"php": "^8.1",
2121
"barryvdh/laravel-dompdf": "^2.0.1",
22-
"finller/laravel-money": "^0.1.3|^1.0.0",
22+
"elegantly/laravel-money": "^2.0.0",
2323
"illuminate/contracts": "^10.0|^11.0",
2424
"spatie/laravel-package-tools": "^1.14"
2525
},

database/factories/InvoiceFactory.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
use Finller\Invoice\InvoiceType;
88
use Illuminate\Database\Eloquent\Factories\Factory;
99

10+
/**
11+
* @extends Factory<Invoice>
12+
*/
1013
class InvoiceFactory extends Factory
1114
{
1215
protected $model = Invoice::class;

database/factories/InvoiceItemFactory.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
use Finller\Invoice\InvoiceItem;
77
use Illuminate\Database\Eloquent\Factories\Factory;
88

9+
/**
10+
* @extends Factory<InvoiceItem>
11+
*/
912
class InvoiceItemFactory extends Factory
1013
{
1114
protected $model = InvoiceItem::class;

phpstan.neon.dist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ includes:
22
- phpstan-baseline.neon
33

44
parameters:
5-
level: 4
5+
level: 5
66
paths:
77
- src
88
- config

src/Casts/Discounts.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,25 @@
22

33
namespace Finller\Invoice\Casts;
44

5+
use Finller\Invoice\InvoiceDiscount;
56
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
67
use Illuminate\Database\Eloquent\Casts\Json;
78
use Illuminate\Database\Eloquent\Model;
89

10+
/**
11+
* @implements CastsAttributes<null|InvoiceDiscount[], array<string, mixed>>
12+
*/
913
class Discounts implements CastsAttributes
1014
{
1115
/**
12-
* Cast the given value.
13-
*
1416
* @param array<string, mixed> $attributes
17+
* @return null|InvoiceDiscount[]
1518
*/
1619
public function get(Model $model, string $key, mixed $value, array $attributes): mixed
1720
{
1821
$data = Json::decode(data_get($attributes, $key, ''));
1922

23+
/** @var string $class */
2024
$class = config('invoices.discount_class');
2125

2226
return is_array($data) ? array_map(fn (?array $item) => $class::fromArray($item), $data) : null;
@@ -25,7 +29,9 @@ public function get(Model $model, string $key, mixed $value, array $attributes):
2529
/**
2630
* Prepare the given value for storage.
2731
*
32+
* @param null|InvoiceDiscount[] $value
2833
* @param array<string, mixed> $attributes
34+
* @return array<string, mixed>
2935
*/
3036
public function set(Model $model, string $key, mixed $value, array $attributes): mixed
3137
{

src/Commands/DenormalizeInvoicesCommand.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,14 @@ public function handle(): int
1717
{
1818
$ids = $this->argument('ids');
1919

20+
/**
21+
* @var string $model
22+
*/
2023
$model = config('invoices.model_invoice');
2124

22-
/** @var Builder $query */
25+
/** @var Builder<Invoice> $query */
2326
$query = $model::query();
27+
2428
$query
2529
->with(['items'])
2630
->when($ids, fn (Builder $q) => $q->whereIn('id', $ids));
@@ -31,7 +35,7 @@ public function handle(): int
3135
$bar = $this->output->createProgressBar($total);
3236

3337
$query
34-
->chunk(200, function (Collection $invoices) use ($bar) {
38+
->chunk(2_000, function (Collection $invoices) use ($bar) {
3539
$invoices->each(function (Invoice $invoice) use ($bar) {
3640
$invoice->denormalize()->saveQuietly();
3741
$bar->advance();

src/GenerateSerialNumber.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,14 @@ public function generate(
1414
string|int|null $month = null,
1515
): string;
1616

17+
/**
18+
* @return array{
19+
* prefix: ?string,
20+
* serie: ?int,
21+
* month: ?int,
22+
* year: ?int,
23+
* count: ?int,
24+
* }
25+
*/
1726
public function parse(string $serialNumber): array;
1827
}

src/Invoice.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44

55
use Brick\Money\Money;
66
use Carbon\Carbon;
7+
use Elegantly\Money\MoneyCast;
78
use Exception;
89
use Finller\Invoice\Casts\Discounts;
9-
use Finller\Money\MoneyCast;
10+
use Finller\Invoice\Database\Factories\InvoiceFactory;
1011
use Illuminate\Contracts\Mail\Attachable;
1112
use Illuminate\Database\Eloquent\Builder;
1213
use Illuminate\Database\Eloquent\Casts\ArrayObject;
@@ -65,6 +66,9 @@
6566
*/
6667
class Invoice extends Model implements Attachable
6768
{
69+
/**
70+
* @use HasFactory<InvoiceFactory>
71+
*/
6872
use HasFactory;
6973

7074
protected $attributes = [

src/InvoiceDiscount.php

Lines changed: 49 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@
77
use Illuminate\Contracts\Support\Arrayable;
88
use JsonSerializable;
99

10-
/** @phpstan-consistent-constructor */
10+
/**
11+
* @implements Arrayable<string, mixed>
12+
*
13+
* @phpstan-consistent-constructor
14+
*/
1115
class InvoiceDiscount implements Arrayable, JsonSerializable
1216
{
1317
use FormatForPdf;
@@ -34,7 +38,10 @@ public function computeDiscountAmountOn(Money $amout): Money
3438
return Money::of(0, $amout->getCurrency());
3539
}
3640

37-
public static function fromArray(?array $array)
41+
/**
42+
* @param ?array<int|string, mixed> $array
43+
*/
44+
public static function fromArray(?array $array): static
3845
{
3946
$currency = data_get($array, 'currency', config('invoices.default_currency'));
4047
$amount_off = data_get($array, 'amount_off');
@@ -48,7 +55,16 @@ public static function fromArray(?array $array)
4855
);
4956
}
5057

51-
public function toArray()
58+
/**
59+
* @return array{
60+
* name: ?string,
61+
* code: ?string,
62+
* amount_off: ?int,
63+
* currency: ?string,
64+
* percent_off: ?float,
65+
* }
66+
*/
67+
public function toArray(): array
5268
{
5369
return [
5470
'name' => $this->name,
@@ -59,17 +75,44 @@ public function toArray()
5975
];
6076
}
6177

62-
public function jsonSerialize(): mixed
78+
/**
79+
* @return array{
80+
* name: ?string,
81+
* code: ?string,
82+
* amount_off: ?int,
83+
* currency: ?string,
84+
* percent_off: ?float,
85+
* }
86+
*/
87+
public function jsonSerialize(): array
6388
{
6489
return $this->toArray();
6590
}
6691

67-
public function toLivewire()
92+
/**
93+
* @return array{
94+
* name: ?string,
95+
* code: ?string,
96+
* amount_off: ?int,
97+
* currency: ?string,
98+
* percent_off: ?float,
99+
* }
100+
*/
101+
public function toLivewire(): array
68102
{
69103
return $this->toArray();
70104
}
71105

72-
public static function fromLivewire($value)
106+
/**
107+
* @param ?array{
108+
* name: ?string,
109+
* code: ?string,
110+
* amount_off: ?int,
111+
* currency: ?string,
112+
* percent_off: ?float,
113+
* } $value
114+
*/
115+
public static function fromLivewire(?array $value): static
73116
{
74117
return static::fromArray($value);
75118
}

src/InvoiceItem.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44

55
use Brick\Money\Money;
66
use Carbon\Carbon;
7-
use Finller\Money\MoneyCast;
7+
use Elegantly\Money\MoneyCast;
8+
use Finller\Invoice\Database\Factories\InvoiceItemFactory;
89
use Illuminate\Database\Eloquent\Casts\ArrayObject;
910
use Illuminate\Database\Eloquent\Casts\AsArrayObject;
1011
use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -28,6 +29,9 @@
2829
*/
2930
class InvoiceItem extends Model
3031
{
32+
/**
33+
* @use HasFactory<InvoiceItemFactory>
34+
*/
3135
use HasFactory;
3236

3337
protected $guarded = [];

0 commit comments

Comments
 (0)