Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

69 lignes
2.0KB

  1. <?php
  2. namespace App\Logics\QRService;
  3. use App\Codes\DepositTransferReason;
  4. use App\Codes\Model\QRServiceUsage;
  5. use App\Exceptions\AppCommonException;
  6. use App\Models\HtpmsCustomer\Mst\ShopNoRelation;
  7. use App\Models\HtpmsCustomer\QRService\PrintTicket;
  8. use Illuminate\Support\Carbon;
  9. class PrintingLogic
  10. {
  11. use DepositCheck;
  12. /**
  13. * サービス券を使用する
  14. *
  15. * @param integer $shopNo
  16. * @param string $parkingManagementCode
  17. * @param string $adjusterTerminalCode
  18. * @param Carbon $publishingDate
  19. * @param integer $seqNo
  20. * @param Carbon $adjustDatetime
  21. * @param integer $discountAmount
  22. * @return void
  23. */
  24. public static function use(
  25. int $shopNo,
  26. string $parkingManagementCode,
  27. string $adjusterTerminalCode,
  28. Carbon $publishingDate,
  29. int $seqNo,
  30. Carbon $adjustDatetime,
  31. int $discountAmount,
  32. ) {
  33. // 重複利用チェック
  34. if (PrintTicket::wherePublishingTerminalCode($adjusterTerminalCode)
  35. ->wherePublishingDate($publishingDate)
  36. ->wherePublishingNo($seqNo)
  37. ->exists()
  38. ) {
  39. throw new AppCommonException("利用済み");
  40. }
  41. // 店舗特定
  42. $relation = ShopNoRelation::whereShopNo($shopNo)
  43. ->whereParkingManagementCode($parkingManagementCode)
  44. ->whereQrServiceUseage(QRServiceUsage::印字方式)
  45. ->firstOrFail();
  46. $qr = new PrintTicket();
  47. $qr->publishing_terminal_code = $adjusterTerminalCode;
  48. $qr->publishing_date = $publishingDate;
  49. $qr->publishing_no = $seqNo;
  50. $qr->shop_id = $relation->shop_id;
  51. $qr->parking_management_code = $parkingManagementCode;
  52. $qr->used_at = $adjustDatetime;
  53. $qr->discount_amount = $discountAmount;
  54. // デポジット処理
  55. self::useDeposit($qr->shop_id, $discountAmount, DepositTransferReason::駐車料金割引_印字);
  56. $qr->save();
  57. }
  58. }