You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CompanyDefaultService.php 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace App\Services;
  3. use App\Models\Company;
  4. use App\Models\Setting\Appearance;
  5. use App\Models\Setting\Currency;
  6. use App\Models\Setting\Discount;
  7. use App\Models\Setting\DocumentDefault;
  8. use App\Models\Setting\Localization;
  9. use App\Models\Setting\Tax;
  10. use App\Models\User;
  11. use Illuminate\Support\Facades\DB;
  12. class CompanyDefaultService
  13. {
  14. public function createCompanyDefaults(Company $company, User $user, string $currencyCode, string $countryCode, string $language): void
  15. {
  16. DB::transaction(function () use ($company, $user, $currencyCode, $countryCode, $language) {
  17. $this->createCurrency($company, $user, $currencyCode);
  18. $this->createSalesTax($company, $user);
  19. $this->createPurchaseTax($company, $user);
  20. $this->createSalesDiscount($company, $user);
  21. $this->createPurchaseDiscount($company, $user);
  22. $this->createAppearance($company, $user);
  23. $this->createDocumentDefaults($company, $user);
  24. $this->createLocalization($company, $user, $countryCode, $language);
  25. }, 5);
  26. }
  27. private function createCurrency(Company $company, User $user, string $currencyCode): void
  28. {
  29. Currency::factory()->forCurrency($currencyCode)->create([
  30. 'company_id' => $company->id,
  31. 'created_by' => $user->id,
  32. 'updated_by' => $user->id,
  33. ]);
  34. }
  35. private function createSalesTax(Company $company, User $user): void
  36. {
  37. Tax::factory()->salesTax()->create([
  38. 'company_id' => $company->id,
  39. 'created_by' => $user->id,
  40. 'updated_by' => $user->id,
  41. ]);
  42. }
  43. private function createPurchaseTax(Company $company, User $user): void
  44. {
  45. Tax::factory()->purchaseTax()->create([
  46. 'company_id' => $company->id,
  47. 'created_by' => $user->id,
  48. 'updated_by' => $user->id,
  49. ]);
  50. }
  51. private function createSalesDiscount(Company $company, User $user): void
  52. {
  53. Discount::factory()->salesDiscount()->create([
  54. 'company_id' => $company->id,
  55. 'created_by' => $user->id,
  56. 'updated_by' => $user->id,
  57. ]);
  58. }
  59. private function createPurchaseDiscount(Company $company, User $user): void
  60. {
  61. Discount::factory()->purchaseDiscount()->create([
  62. 'company_id' => $company->id,
  63. 'created_by' => $user->id,
  64. 'updated_by' => $user->id,
  65. ]);
  66. }
  67. private function createAppearance(Company $company, User $user): void
  68. {
  69. Appearance::factory()->create([
  70. 'company_id' => $company->id,
  71. 'created_by' => $user->id,
  72. 'updated_by' => $user->id,
  73. ]);
  74. }
  75. private function createDocumentDefaults(Company $company, User $user): void
  76. {
  77. DocumentDefault::factory()->invoice()->create([
  78. 'company_id' => $company->id,
  79. 'created_by' => $user->id,
  80. 'updated_by' => $user->id,
  81. ]);
  82. DocumentDefault::factory()->bill()->create([
  83. 'company_id' => $company->id,
  84. 'created_by' => $user->id,
  85. 'updated_by' => $user->id,
  86. ]);
  87. }
  88. private function createLocalization(Company $company, User $user, string $countryCode, string $language): void
  89. {
  90. Localization::factory()->withCountry($countryCode, $language)->create([
  91. 'company_id' => $company->id,
  92. 'created_by' => $user->id,
  93. 'updated_by' => $user->id,
  94. ]);
  95. }
  96. }