diff --git a/Database/factories/CustomerFactory.php b/Database/factories/CustomerFactory.php new file mode 100644 index 0000000..3f1afda --- /dev/null +++ b/Database/factories/CustomerFactory.php @@ -0,0 +1,27 @@ +environment() !== 'local') { + putenv('APP_ENV=local'); + $_ENV['APP_ENV'] = 'local'; + $_SERVER['APP_ENV'] = 'local'; + } + DB::beginTransaction(); + + $this->reportDate = Carbon::today()->toDateString(); + } + + protected function tearDown(): void + { + DB::rollBack(); + parent::tearDown(); + } + + /**@test */ + public function test_generate_report_button_loads_sales_and_credit_collection_data_correctly() + { + $cashier = User::factory()->create([ + 'name' => fake()->name(), + 'is_active' => 1, + 'is_deleted' => 0, + ]); + + $customer = Customer::factory()->create([ + 'name' => fake()->name(), + 'customer_group_id' => 1, + ]); + + $cashOptionId = DB::table('payment_options')->insertGetId([ + 'name' => 'Cash', + 'is_active' => 1, + ]); + + $card1OptionId = DB::table('payment_options')->insertGetId([ + 'name' => 'Card 1', + 'is_active' => 1, + ]); + + $todaySaleId = DB::table('sales')->insertGetId([ + 'reference_no' => 'INV-TEST-' . fake()->unique()->numerify('####'), + 'user_id' => $cashier->id, + 'customer_id' => $customer->id, + 'warehouse_id' => 1, + 'item' => 1, + 'total_qty' => 1, + 'total_discount' => 0, + 'total_tax' => 0, + 'total_price' => 5000, + 'grand_total' => 5000, + 'sale_status' => 1, + 'payment_status' => 1, + 'due_amount' => 0, + 'paid_amount' => 5000, + 'created_at' => $this->reportDate . ' 10:00:00', + ]); + + DB::table('payments')->insert([ + 'payment_reference' => 'PAY-TEST-1', + 'user_id' => $cashier->id, + 'sale_id' => $todaySaleId, + 'amount' => 5000, + 'change' => 0, + 'paying_method' => 'cash', + 'payment_option_id' => $cashOptionId, + 'created_at' => $this->reportDate . ' 10:00:00', + ]); + + $creditSaleId = DB::table('sales')->insertGetId([ + 'reference_no' => 'INV-TEST-' . fake()->unique()->numerify('####'), + 'user_id' => $cashier->id, + 'customer_id' => $customer->id, + 'warehouse_id' => 1, + 'item' => 1, + 'total_qty' => 1, + 'total_discount' => 0, + 'total_tax' => 0, + 'total_price' => 3000, + 'grand_total' => 3000, + 'sale_status' => 1, + 'payment_status' => 0, + 'due_amount' => 3000, + 'paid_amount' => 0, + 'created_at' => Carbon::parse($this->reportDate)->subDays(5)->format('Y-m-d H:i:s'), + ]); + + DB::table('payments')->insert([ + 'payment_reference' => 'PAY-TEST-2', + 'user_id' => $cashier->id, + 'sale_id' => $creditSaleId, + 'amount' => 3000, + 'change' => 0, + 'paying_method' => 'card', + 'payment_option_id' => $card1OptionId, + 'created_at' => $this->reportDate . ' 14:00:00', + ]); + + $response = $this->actingAs($cashier) + ->get('/dailysalepaymentreportmodule?report_date=' . $this->reportDate); + + $response->assertStatus(200); + + $response->assertSee($customer->name); + $response->assertSee('5,000.00'); + + $response->assertSee('3,000.00'); + + $response->assertSee('Payment Method Summary'); + $response->assertSee('8,000.00'); + } + + public function test_generate_report_shows_no_records_message_when_no_sales_exist_for_selected_date(){ + $cashier = User::factory()->create([ + 'is_active' => 1, + 'is_deleted' => 0, + ]); + + $emptyDate = Carbon::today()->subYears(5)->toDateString(); + + $response = $this->actingAs($cashier) + ->get('/dailysalepaymentreportmodule?report_date=' . $emptyDate); + + $response->assertStatus(200); + $response->assertSee('0.00'); + } + +}