From 9ed67e74e2fab7b1bc168676a2c84c5234edfe2c Mon Sep 17 00:00:00 2001 From: "weiken.intex" Date: Mon, 7 Dec 2020 14:00:24 +0800 Subject: [PATCH] create Transaction & Transaction Detail - Supplier (AP) - PO - DO - INV - Customer (AR) - PO - DO - INV --- .../Companies/Services/FetchesCompany.php | 33 ++++ .../CreateTransactionLogic.php | 147 +++++++++++++++++ .../TransactionDetailObject.php | 113 +++++++++++++ .../DataTransferObjects/TransactionObject.php | 150 ++++++++++++++++++ .../ChecksIfTransactionBillNoExists.php | 22 +++ .../Services/CreatesTransaction.php | 35 ++++ .../Services/CreatesTransactionDetail.php | 31 ++++ .../Services/GeneratesTransactionBillNo.php | 27 ++++ .../Standards/Rules/CanCreateTransaction.php | 50 ++++++ .../Rules/CanCreateTransactionDetail.php | 50 ++++++ .../TransactionDetailValidation.php | 63 ++++++++ .../Validators/TransactionValidation.php | 69 ++++++++ .../CreateTransactionController.php | 15 ++ .../Resources/TransactionDetailResource.php | 31 ++++ app/Http/Resources/TransactionResource.php | 34 ++++ app/Models/Transaction.php | 27 ++++ app/Models/TransactionDetail.php | 17 ++ ..._12_01_102314_create_transaction_table.php | 63 ++++++++ routes/transaction.php | 10 ++ 19 files changed, 987 insertions(+) create mode 100644 app/Classes/Modules/Companies/Services/FetchesCompany.php create mode 100644 app/Classes/Modules/Transactions/ControllersLogic/CreateTransactionLogic.php create mode 100644 app/Classes/Modules/Transactions/DataTransferObjects/TransactionDetailObject.php create mode 100644 app/Classes/Modules/Transactions/DataTransferObjects/TransactionObject.php create mode 100644 app/Classes/Modules/Transactions/Services/ChecksIfTransactionBillNoExists.php create mode 100644 app/Classes/Modules/Transactions/Services/CreatesTransaction.php create mode 100644 app/Classes/Modules/Transactions/Services/CreatesTransactionDetail.php create mode 100644 app/Classes/Modules/Transactions/Services/GeneratesTransactionBillNo.php create mode 100644 app/Classes/Modules/Transactions/Standards/Rules/CanCreateTransaction.php create mode 100644 app/Classes/Modules/Transactions/Standards/Rules/CanCreateTransactionDetail.php create mode 100644 app/Classes/Modules/Transactions/Standards/Validators/TransactionDetailValidation.php create mode 100644 app/Classes/Modules/Transactions/Standards/Validators/TransactionValidation.php create mode 100644 app/Http/Controllers/Transactions/CreateTransactionController.php create mode 100644 app/Http/Resources/TransactionDetailResource.php create mode 100644 app/Http/Resources/TransactionResource.php create mode 100644 app/Models/Transaction.php create mode 100644 app/Models/TransactionDetail.php create mode 100644 database/migrations/2020_12_01_102314_create_transaction_table.php create mode 100644 routes/transaction.php diff --git a/app/Classes/Modules/Companies/Services/FetchesCompany.php b/app/Classes/Modules/Companies/Services/FetchesCompany.php new file mode 100644 index 00000000..2ff37e7a --- /dev/null +++ b/app/Classes/Modules/Companies/Services/FetchesCompany.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Transactions/ControllersLogic/CreateTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/CreateTransactionLogic.php new file mode 100644 index 00000000..fef47022 --- /dev/null +++ b/app/Classes/Modules/Transactions/ControllersLogic/CreateTransactionLogic.php @@ -0,0 +1,147 @@ + 'Created Transaction', + 'message' => 'You have successfully created a transaction' + ]; + } + + + /** @var GeneratesTransactionBillNo */ + private $generatesTransactionBillNo; + + /** @var CanCreateTransaction */ + private $canCreateTransaction; + + private $fetchesCurrency; + + private $rateCalculatesCurrency; + + private $fetchesCompany; + + private $createsTransaction; + + private $canCreateTransactionDetail; + + private $createsTransactionDetail; + /** + * CreateWalletLogic constructor. + * @param CreatesWallet $createsWallet + * @param GeneratesWalletCode $generatesWalletCode + * @param CanCreateCompanyWallet $canCreateCompanyWallet + */ + public function __construct( + GeneratesTransactionBillNo $generatesTransactionBillNo, CanCreateTransaction $canCreateTransaction, + FetchesCurrency $fetchesCurrency,RateCalculatesCurrency $rateCalculatesCurrency, FetchesCompany $fetchesCompany, + CreatesTransaction $createsTransaction, + CanCreateTransactionDetail $canCreateTransactionDetail, CreatesTransactionDetail $createsTransactionDetail + ){ + $this->generatesTransactionBillNo = $generatesTransactionBillNo; + $this->canCreateTransaction = $canCreateTransaction; + $this->fetchesCurrency = $fetchesCurrency; + $this->rateCalculatesCurrency = $rateCalculatesCurrency; + $this->fetchesCompany = $fetchesCompany; + $this->createsTransaction =$createsTransaction; + $this->canCreateTransactionDetail =$canCreateTransactionDetail; + $this->createsTransactionDetail = $createsTransactionDetail; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + + DB::beginTransaction(); + $json_array = json_decode($request->getContent(), true); + $company = $this->fetchesCompany->execute(['id' => $json_array['company_id']]); + + $conversion_currency = $this->fetchesCurrency->execute(['id' => $json_array['currency_id']]); + $convertable_currency = $this->fetchesCurrency->execute(['id' => 1]);//MYR + $convert_amount = $this->rateCalculatesCurrency->execute($conversion_currency, $convertable_currency, $json_array['amount']); + $convert_rate = $this->rateCalculatesCurrency->execute_rate($conversion_currency, $convertable_currency); + /* + int $bill_no,string $trans_type1,string $trans_type2, + float $amount, int $currency_id, int $original_amount, + int $original_currency_id, float $currency_rate, + string $dt_transaction,int $status,int $booking_id, + int $company_id + */ + $object = new TransactionObject( + $this->generatesTransactionBillNo->execute(),$json_array['trans_type1'],$json_array['trans_type2'], + number_format( (float) $convert_amount, 5, '.', ''), 1 , number_format( (float) $json_array['amount'], 5, '.', ''), + $json_array['currency_id'],number_format( (float) $convert_rate, 5, '.', ''), + $json_array['dt_transaction'],1,$request->route('id'), + $company->id + ); + + $this->canCreateTransaction->passes($object); + + $transaction = $this->createsTransaction->execute($object); + + $transaction_array = new TransactionResource($transaction); + $transaction_detail_array = array(); + foreach ($json_array['transaction_detail'] as $key => $value) { + + $object_detail = new TransactionDetailObject( + $json_array['trans_type1'],$json_array['trans_type2'], + $transaction->id,$value['product_code'],$value['product_name'], + (int)$value['qty'],number_format( (float) $convert_amount, 5, '.', ''), number_format( (float) $json_array['amount'], 5, '.', '') + ); + $this->canCreateTransactionDetail->passes($object_detail); + $transaction_detail = $this->createsTransactionDetail->execute($object_detail); + //array_push($stack, "apple", "raspberry"); + $transaction_detail_resource= new TransactionDetailResource($transaction_detail); + $transaction_detail_array[]= $transaction_detail_resource->toArray($request); + + } + + //$transaction_array['transaction_detail']= $transaction_detail_array; + //print_r($transaction_detail_array); + //dd($transaction_detail_array); + DB::commit(); + + return $this->resourceResponse($transaction_array); + //return $this->resourceResponse($json_array); + + } catch (\Exception $exception) { + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Transactions/DataTransferObjects/TransactionDetailObject.php b/app/Classes/Modules/Transactions/DataTransferObjects/TransactionDetailObject.php new file mode 100644 index 00000000..81fe6d23 --- /dev/null +++ b/app/Classes/Modules/Transactions/DataTransferObjects/TransactionDetailObject.php @@ -0,0 +1,113 @@ +string('trans_type1'); + $table->string('trans_type2'); + $table->bigInteger('transaction_id')->unsigned(); + $table->string('product_code'); + $table->string('product_name'); + $table->integer('qty')->default(0); + $table->decimal('price', 14, 5)->default(0.00); + $table->decimal('amount', 14, 5)->default(0.00); + */ + private $trans_type1; + + private $trans_type2; + + private $transaction_id; + + private $product_code; + + private $product_name; + + private $qty; + + private $price; + + private $amount; + + + public function __construct( + string $trans_type1,string $trans_type2, + int $transaction_id, string $product_code, $product_name, + int $qty, float $price,float $amount + ){ + $this->trans_type1= $trans_type1; + $this->trans_type2 = $trans_type2; + $this->transaction_id = $transaction_id; + $this->product_code = $product_code; + $this->product_name = $product_name; + $this->qty = $qty; + $this->price = $price; + $this->amount = $amount; + + } + + + /** + * @return string + */ + public function getTransType1(): string + { + return $this->trans_type1; + } + + /** + * @return string + */ + public function getTransType2(): string + { + return $this->trans_type2; + } + + /** + * @return int + */ + public function getTransactionId(): int + { + return $this->transaction_id; + } + + /** + * @return string + */ + public function getProductCode(): string + { + return $this->product_code; + } + + /** + * @return string + */ + public function getProductName(): string + { + return $this->product_name; + } + + /** + * @return int + */ + public function getQty(): int + { + return $this->qty; + } + + public function getPrice(): float + { + return $this->price; + } + + public function getAmount(): float + { + return $this->amount; + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Transactions/DataTransferObjects/TransactionObject.php b/app/Classes/Modules/Transactions/DataTransferObjects/TransactionObject.php new file mode 100644 index 00000000..22fc241a --- /dev/null +++ b/app/Classes/Modules/Transactions/DataTransferObjects/TransactionObject.php @@ -0,0 +1,150 @@ + $this->id, + 'trans_type1' => $this->trans_type1, + 'trans_type2' => $this->trans_type2, + 'bill_no' => (int) $this->bill_no, + 'amount' => (double) $this->amount, + 'currency_id' => (int) $this->currency_id, + 'original_amount' => (double) $this->original_amount, + 'original_currency_id' => (int) $this->original_currency_id, + 'currency_rate' => (double) $this->currency_rate, + 'dt_transaction' => $this->dt_transaction, + 'status' => (int) $this->status, + 'booking_id' => (int) $this->booking_id, + 'company_id' => (int) $this->company_id + ]; + */ + private $trans_type1; + + private $trans_type2; + + private $bill_no; + + private $amount; + + private $currency_id; + + private $original_amount; + + private $original_currency_id; + + private $currency_rate; + + private $dt_transaction; + + private $status; + + private $booking_id; + + private $company_id; + + public function __construct( + int $bill_no,string $trans_type1,string $trans_type2, + float $amount, int $currency_id, int $original_amount, + int $original_currency_id, float $currency_rate, + string $dt_transaction,int $status,int $booking_id, + int $company_id + ){ + $this->bill_no = $bill_no; + $this->trans_type1= $trans_type1; + $this->trans_type2 = $trans_type2; + $this->amount= $amount; + $this->currency_id = $currency_id; + $this->original_amount = $original_amount; + $this->original_currency_id = $original_currency_id; + $this->currency_rate = $currency_rate; + $this->dt_transaction = $dt_transaction; + $this->status = $status; + $this->booking_id = $booking_id; + $this->company_id = $company_id; + } + + + /** + * @return int + */ + public function getBillNo(): int + { + return $this->bill_no; + } + + /** + * @return string + */ + public function getTransType1(): string + { + return $this->trans_type1; + } + + /** + * @return string + */ + public function getTransType2(): string + { + return $this->trans_type2; + } + + + public function getAmount(): float + { + return $this->amount; + } + + /** + * @return int + */ + public function getCurrency(): int + { + return $this->currency_id; + } + + + public function getOriginalAmount(): float + { + return $this->original_amount; + } + + public function getOriginalCurrency(): int + { + return $this->original_currency_id; + } + + public function getCurrencyRate(): float + { + return $this->currency_rate; + } + + /** + * @return string + */ + public function getDtTransaction(): string + { + return $this->dt_transaction; + } + + public function getStatus(): int + { + return $this->original_currency_id; + } + + public function getBookingId(): int + { + return $this->booking_id; + } + + public function getCompanyId(): int + { + return $this->company_id; + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Transactions/Services/ChecksIfTransactionBillNoExists.php b/app/Classes/Modules/Transactions/Services/ChecksIfTransactionBillNoExists.php new file mode 100644 index 00000000..0d933c7d --- /dev/null +++ b/app/Classes/Modules/Transactions/Services/ChecksIfTransactionBillNoExists.php @@ -0,0 +1,22 @@ +repository = $repository; + } + + public function execute(int $bill_no): bool { + return $this->repository->where('bill_no', $bill_no)->exists(); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Transactions/Services/CreatesTransaction.php b/app/Classes/Modules/Transactions/Services/CreatesTransaction.php new file mode 100644 index 00000000..e1bb92a7 --- /dev/null +++ b/app/Classes/Modules/Transactions/Services/CreatesTransaction.php @@ -0,0 +1,35 @@ +bill_no = $object->getBillNo(); + $model->trans_type1 = $object->getTransType1(); + $model->trans_type2 = $object->getTransType2(); + $model->amount = $object->getAmount(); + $model->currency_id = $object->getCurrency(); + $model->original_amount = $object->getOriginalAmount(); + $model->original_currency_id = $object->getOriginalCurrency(); + $model->currency_rate = $object->getCurrencyRate(); + $model->dt_transaction = $object->getDtTransaction(); + $model->status = $object->getStatus(); + $model->booking_id = $object->getBookingId(); + $model->company_id = $object->getCompanyId(); + + + return $this->handler($model); + + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Transactions/Services/CreatesTransactionDetail.php b/app/Classes/Modules/Transactions/Services/CreatesTransactionDetail.php new file mode 100644 index 00000000..c1e91c7f --- /dev/null +++ b/app/Classes/Modules/Transactions/Services/CreatesTransactionDetail.php @@ -0,0 +1,31 @@ +trans_type1 = $object->getTransType1(); + $model->trans_type2 = $object->getTransType2(); + $model->transaction_id = $object->getTransactionId(); + $model->product_code = $object->getProductCode(); + $model->product_name = $object->getProductName(); + $model->qty = $object->getQty(); + $model->price = $object->getPrice(); + $model->amount = $object->getAmount(); + + + return $this->handler($model); + + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Transactions/Services/GeneratesTransactionBillNo.php b/app/Classes/Modules/Transactions/Services/GeneratesTransactionBillNo.php new file mode 100644 index 00000000..fb7c6867 --- /dev/null +++ b/app/Classes/Modules/Transactions/Services/GeneratesTransactionBillNo.php @@ -0,0 +1,27 @@ +transationBillNoExists = $transationBillNoExists; + } + + + + public function execute(): int { + + $code = mt_rand(100000001, 999999999); + return !$this->transationBillNoExists->execute($code) ? $code : self::execute(); + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Transactions/Standards/Rules/CanCreateTransaction.php b/app/Classes/Modules/Transactions/Standards/Rules/CanCreateTransaction.php new file mode 100644 index 00000000..b81c4a09 --- /dev/null +++ b/app/Classes/Modules/Transactions/Standards/Rules/CanCreateTransaction.php @@ -0,0 +1,50 @@ +transactionValidation = $transactionValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + } + + /** + * @param CompanyWalletValidation $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->transactionValidation->validate($object); + } + + /** + * @param SegmentCompanyValidation $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Transactions/Standards/Rules/CanCreateTransactionDetail.php b/app/Classes/Modules/Transactions/Standards/Rules/CanCreateTransactionDetail.php new file mode 100644 index 00000000..cc2f2f3c --- /dev/null +++ b/app/Classes/Modules/Transactions/Standards/Rules/CanCreateTransactionDetail.php @@ -0,0 +1,50 @@ +transactionDetailValidation = $transactionDetailValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + } + + /** + * @param CompanyWalletValidation $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->transactionDetailValidation->validate($object); + } + + /** + * @param SegmentCompanyValidation $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Transactions/Standards/Validators/TransactionDetailValidation.php b/app/Classes/Modules/Transactions/Standards/Validators/TransactionDetailValidation.php new file mode 100644 index 00000000..15e23dcd --- /dev/null +++ b/app/Classes/Modules/Transactions/Standards/Validators/TransactionDetailValidation.php @@ -0,0 +1,63 @@ +bill_no = $bill_no; + $this->trans_type1= $trans_type1; + $this->trans_type2 = $trans_type2; + $this->amount= $amount; + $this->currency_id = $currency_id; + $this->original_amount = $original_amount; + $this->original_currency_id = $original_currency_id; + $this->currency_rate = $currency_rate; + $this->dt_transaction = $dt_transaction; + $this->status = $status; + $this->booking_id = $booking_id; + $this->company_id = $company_id; + */ + protected function data($object): array + { + return [ + 'trans_type1' => $object->getTransType1(), + 'trans_type2' => $object->getTransType2(), + 'transaction_id' => $object->getTransactionId(), + 'product_code' => $object->getProductCode(), + 'product_name'=>$object->getProductName(), + 'qty'=>$object->getQty(), + 'price'=>$object->getPrice(), + 'amount' => $object->getAmount() + ]; + } + + /** + * @return array + */ + protected function rules(): array + { + return [ + 'trans_type1' => 'required', + 'trans_type2' => 'required', + 'transaction_id' => 'required', + 'product_code' => 'required', + 'product_name'=>'required', + 'qty'=>'required', + 'price'=>'required', + 'amount' => 'required' + ]; + } + + /** + * @return array + */ + protected function messages(): array + { + return []; + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Transactions/Standards/Validators/TransactionValidation.php b/app/Classes/Modules/Transactions/Standards/Validators/TransactionValidation.php new file mode 100644 index 00000000..3249f8a1 --- /dev/null +++ b/app/Classes/Modules/Transactions/Standards/Validators/TransactionValidation.php @@ -0,0 +1,69 @@ +bill_no = $bill_no; + $this->trans_type1= $trans_type1; + $this->trans_type2 = $trans_type2; + $this->amount= $amount; + $this->currency_id = $currency_id; + $this->original_amount = $original_amount; + $this->original_currency_id = $original_currency_id; + $this->currency_rate = $currency_rate; + $this->dt_transaction = $dt_transaction; + $this->status = $status; + $this->booking_id = $booking_id; + $this->company_id = $company_id; + */ + protected function data($object): array + { + return [ + 'bill_no' => $object->getBillNo(), + 'trans_type1' => $object->getBillNo(), + 'trans_type2' => $object->getTransType2(), + 'amount' => $object->getAmount(), + 'currency_id' => $object->getCurrency(), + 'original_amount' => $object->getOriginalAmount(), + 'original_currency_id'=>$object->getOriginalCurrency(), + 'dt_transaction'=>$object->getDtTransaction(), + 'status'=>$object->getStatus(), + 'booking_id'=>$object->getBookingId(), + 'company_id'=>$object->getCompanyId() + ]; + } + + /** + * @return array + */ + protected function rules(): array + { + return [ + 'bill_no' => 'required', + 'trans_type1' => 'required', + 'trans_type2' => 'required', + 'amount' => 'required', + 'currency_id' => 'required', + 'original_amount' => 'required', + 'original_currency_id'=>'required', + 'dt_transaction'=>'required', + 'status'=>'required', + 'booking_id'=>'required', + 'company_id'=>'required' + ]; + } + + /** + * @return array + */ + protected function messages(): array + { + return []; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Transactions/CreateTransactionController.php b/app/Http/Controllers/Transactions/CreateTransactionController.php new file mode 100644 index 00000000..c311ca19 --- /dev/null +++ b/app/Http/Controllers/Transactions/CreateTransactionController.php @@ -0,0 +1,15 @@ +execute($request); + } +} \ No newline at end of file diff --git a/app/Http/Resources/TransactionDetailResource.php b/app/Http/Resources/TransactionDetailResource.php new file mode 100644 index 00000000..9589b1f7 --- /dev/null +++ b/app/Http/Resources/TransactionDetailResource.php @@ -0,0 +1,31 @@ + $this->id, + 'trans_type1' => $this->trans_type1, + 'trans_type2' => $this->trans_type2, + 'transaction_id' => (int) $this->transaction_id, + 'product_code' => $this->product_code, + 'product_name' => $this->product_name, + 'qty' => (int) $this->qty, + 'price' => (double) $this->price, + 'amount' => (double) $this->amount + + ]; + } +} diff --git a/app/Http/Resources/TransactionResource.php b/app/Http/Resources/TransactionResource.php new file mode 100644 index 00000000..c5ba9af5 --- /dev/null +++ b/app/Http/Resources/TransactionResource.php @@ -0,0 +1,34 @@ + $this->id, + 'trans_type1' => $this->trans_type1, + 'trans_type2' => $this->trans_type2, + 'bill_no' => (int) $this->bill_no, + 'amount' => (double) $this->amount, + 'currency_id' => (int) $this->currency_id, + 'original_amount' => (double) $this->original_amount, + 'original_currency_id' => (int) $this->original_currency_id, + 'currency_rate' => (double) $this->currency_rate, + 'dt_transaction' => $this->dt_transaction, + 'status' => (int) $this->status, + 'booking_id' => (int) $this->booking_id, + 'company_id' => (int) $this->company_id + ]; + } +} diff --git a/app/Models/Transaction.php b/app/Models/Transaction.php new file mode 100644 index 00000000..51b28c09 --- /dev/null +++ b/app/Models/Transaction.php @@ -0,0 +1,27 @@ +hasOne(Companies::class, 'company_id', 'id'); + } + + public function currency(): HasOne + { + return $this->hasOne(Currency::class, 'currency_id', 'id'); + } + + public function original_currency(): HasOne + { + return $this->hasOne(Currency::class, 'original_currency_id', 'id'); + } + +} diff --git a/app/Models/TransactionDetail.php b/app/Models/TransactionDetail.php new file mode 100644 index 00000000..49494327 --- /dev/null +++ b/app/Models/TransactionDetail.php @@ -0,0 +1,17 @@ +hasOne(Transaction::class, 'transaction_id', 'id'); + } + +} diff --git a/database/migrations/2020_12_01_102314_create_transaction_table.php b/database/migrations/2020_12_01_102314_create_transaction_table.php new file mode 100644 index 00000000..c66a6fbe --- /dev/null +++ b/database/migrations/2020_12_01_102314_create_transaction_table.php @@ -0,0 +1,63 @@ +id(); + $table->string('trans_type1'); + $table->string('trans_type2'); + $table->bigInteger('bill_no')->unsigned(); + $table->decimal('amount', 14, 5)->default(0.00); + $table->decimal('original_amount', 14, 5)->default(0.00); + $table->bigInteger('currency_id')->unsigned(); + $table->bigInteger('original_currency_id')->unsigned(); + $table->decimal('currency_rate', 14, 5)->default(0.00); + $table->date('dt_transaction'); + $table->integer('status'); + $table->bigInteger('booking_id')->unsigned(); + $table->bigInteger('company_id')->unsigned(); + $table->timestamps(); + $table->foreign('company_id')->references('id')->on('companies')->onDelete('cascade'); + $table->foreign('currency_id')->references('id')->on('currencies')->onDelete('cascade'); + $table->foreign('original_currency_id')->references('id')->on('currencies')->onDelete('cascade'); + + }); + + Schema::create('transaction_detail', function (Blueprint $table) { + $table->id(); + $table->string('trans_type1'); + $table->string('trans_type2'); + $table->bigInteger('transaction_id')->unsigned(); + $table->string('product_code'); + $table->string('product_name'); + $table->integer('qty')->default(0); + $table->decimal('price', 14, 5)->default(0.00); + $table->decimal('amount', 14, 5)->default(0.00); + $table->timestamps(); + $table->foreign('transaction_id')->references('id')->on('transaction')->onDelete('cascade'); + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('transaction'); + Schema::dropIfExists('transaction_detail'); + } +} diff --git a/routes/transaction.php b/routes/transaction.php new file mode 100644 index 00000000..e0e9ba86 --- /dev/null +++ b/routes/transaction.php @@ -0,0 +1,10 @@ + 'transactions', 'namespace' => 'Transactions', 'as' => 'transaction.'], function () { + + Route::post('/create/{id}', 'CreateTransactionController@create')->name('create'); + //Route::post('/create-transaction/{id}', 'CreateWalletTransactionController@create')->name('create_transaction'); + +}); \ No newline at end of file