resq/src/Command/TestInvoiceManagerCommand.php

867 lines
28 KiB
PHP

<?php
namespace App\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Doctrine\ORM\EntityManagerInterface;
use App\Service\InvoiceManager;
use App\InvoiceCriteria;
use App\Ramcar\ServiceType;
use App\Entity\Battery;
use App\Entity\CustomerVehicle;
class TestInvoiceManagerCommand extends Command
{
protected $inv_manager;
protected $em;
protected function configure()
{
$this->setName('test:generateinvoice')
->setDescription('Test invoice manager service.')
->setHelp('Test invoice manager service.');
}
public function __construct(InvoiceManager $inv_manager, EntityManagerInterface $em)
{
$this->em = $em;
$this->inv_manager = $inv_manager;
parent::__construct();
}
protected function execute(InputInterface $input, OutputInterface $output)
{
// battery sales
$this->testBatterySalesNoTradeInNoDiscount();
$this->testBatterySalesQuantityNoTradeInNoDiscount();
// battery sales with trade in
$this->testBatterySalesTradeInSameBatteryPremiumNoDiscount();
$this->testBatterySalesTradeInSameBatteryMotoliteNoDiscount();
$this->testBatterySalesTradeInSameBatteryOtherNoDiscount();
$this->testBatterySalesTradeInDifferentBatteryPremiumNoDiscount();
$this->testBatterySalesTradeInDifferentBatteryMotoliteNoDiscount();
$this->testBatterySalesTradeInDifferentBatteryOtherNoDiscount();
$this->testBatterySalesTradeInQuantityNoDiscount();
// battery sales with discount
// battery replacement warranty
$this->testBatteryReplacementWarranty();
// fuel
$this->testFuelGasWithServiceFee();
$this->testFuelDieselWithServiceFee();
$this->testFuelGasWithNoServiceFee();
$this->testFuelDieselWithNoServiceFee();
// jumpstart
$this->testJumpstart();
// jumpstart warranty
$this->testJumpstartWarranty();
// overheat
$this->testOverheatAssistanceWithCoolant();
$this->testOverheatAssistanceWithoutCoolant();
// post-recharged
$this->testPostRecharged();
// post replacement
$this->testPostReplacement();
// tire repair
$this->testTireRepairWithServiceFee();
$this->testTireRepairWithoutServiceFee();
// TEST SCENARIO: new battery with discount
// TEST SCENARIO: new battery with discount and trade-in
return 0;
}
protected function testBatterySalesNoTradeInNoDiscount()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: new battery, no trade-in, no discount
$criteria->setServiceType(ServiceType::BATTERY_REPLACEMENT_NEW);
$battery_id = 1038;
$battery = $this->em->getRepository(Battery::class)->find($battery_id);
$criteria->addEntry($battery, null, 1);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
// error_log(print_r(json_encode($invoice_data), true));
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::BATTERY_REPLACEMENT_NEW) . ' NO TRADE IN NO DISCOUNT ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testBatterySalesQuantityNoTradeInNoDiscount()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: new battery, more than 1, no trade-in, no discount
$criteria->setServiceType(ServiceType::BATTERY_REPLACEMENT_NEW);
$battery_id = 1038;
$battery = $this->em->getRepository(Battery::class)->find($battery_id);
$criteria->addEntry($battery, null, 2);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
// error_log(print_r(json_encode($invoice_data), true));
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::BATTERY_REPLACEMENT_NEW) . ' QUANTITY NO TRADE IN NO DISCOUNT ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testBatterySalesTradeInSameBatteryPremiumNoDiscount()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: new battery, trade-in same battery, premium, no discount
$criteria->setServiceType(ServiceType::BATTERY_REPLACEMENT_NEW);
$battery_id = 1038;
$battery = $this->em->getRepository(Battery::class)->find($battery_id);
// add battery
$criteria->addEntry($battery, null, 1);
// add battery for trade in
$criteria->addEntry($battery, 'premium', 1);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::BATTERY_REPLACEMENT_NEW) . ' PREMIUM TRADE IN SAME BATTERY NO DISCOUNT ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testBatterySalesTradeInSameBatteryMotoliteNoDiscount()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: new battery, trade-in same battery, motolite, no discount
$criteria->setServiceType(ServiceType::BATTERY_REPLACEMENT_NEW);
$battery_id = 1038;
$battery = $this->em->getRepository(Battery::class)->find($battery_id);
// add battery
$criteria->addEntry($battery, null, 1);
// add battery for trade in
$criteria->addEntry($battery, 'motolite', 1);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::BATTERY_REPLACEMENT_NEW) . ' MOTOLITE TRADE IN SAME BATTERY NO DISCOUNT ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testBatterySalesTradeInSameBatteryOtherNoDiscount()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: new battery, trade-in same battery, other, no discount
$criteria->setServiceType(ServiceType::BATTERY_REPLACEMENT_NEW);
$battery_id = 1038;
$battery = $this->em->getRepository(Battery::class)->find($battery_id);
// add battery
$criteria->addEntry($battery, null, 1);
// add battery for trade in
$criteria->addEntry($battery, 'other', 1);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::BATTERY_REPLACEMENT_NEW) . ' OTHER TRADE IN SAME BATTERY NO DISCOUNT ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testBatterySalesTradeInDifferentBatteryPremiumNoDiscount()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: new battery, trade-in different battery, premium, no discount
$criteria->setServiceType(ServiceType::BATTERY_REPLACEMENT_NEW);
$battery_id = 1038;
$battery = $this->em->getRepository(Battery::class)->find($battery_id);
// add battery
$criteria->addEntry($battery, null, 1);
$trade_battery_id = 1037;
$trade_battery = $this->em->getRepository(Battery::class)->find($trade_battery_id);
// add battery for trade in
$criteria->addEntry($trade_battery, 'premium', 1);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::BATTERY_REPLACEMENT_NEW) . ' PREMIUM TRADE IN DIFFERENT BATTERY NO DISCOUNT ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testBatterySalesTradeInDifferentBatteryMotoliteNoDiscount()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: new battery, trade-in different battery, motolite, no discount
$criteria->setServiceType(ServiceType::BATTERY_REPLACEMENT_NEW);
$battery_id = 1038;
$battery = $this->em->getRepository(Battery::class)->find($battery_id);
// add battery
$criteria->addEntry($battery, null, 1);
$trade_battery_id = 1037;
$trade_battery = $this->em->getRepository(Battery::class)->find($trade_battery_id);
// add battery for trade in
$criteria->addEntry($trade_battery, 'motolite', 1);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::BATTERY_REPLACEMENT_NEW) . ' MOTOLITE TRADE IN DIFFERENT BATTERY NO DISCOUNT ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testBatterySalesTradeInDifferentBatteryOtherNoDiscount()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: new battery, trade-in different battery, other, no discount
$criteria->setServiceType(ServiceType::BATTERY_REPLACEMENT_NEW);
$battery_id = 1038;
$battery = $this->em->getRepository(Battery::class)->find($battery_id);
// add battery
$criteria->addEntry($battery, null, 1);
$trade_battery_id = 1037;
$trade_battery = $this->em->getRepository(Battery::class)->find($trade_battery_id);
// add battery for trade in
$criteria->addEntry($trade_battery, 'other', 1);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::BATTERY_REPLACEMENT_NEW) . ' OTHER TRADE IN DIFFERENT BATTERY NO DISCOUNT ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testBatterySalesTradeInQuantityNoDiscount()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: new battery, trade-in different battery, premium, no discount
$criteria->setServiceType(ServiceType::BATTERY_REPLACEMENT_NEW);
$battery_id = 1038;
$battery = $this->em->getRepository(Battery::class)->find($battery_id);
// add battery
$criteria->addEntry($battery, null, 1);
$trade_battery_id = 1037;
$trade_battery = $this->em->getRepository(Battery::class)->find($trade_battery_id);
// add battery for trade in
$criteria->addEntry($trade_battery, 'other', 3);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::BATTERY_REPLACEMENT_NEW) . ' QUANTITY TRADE IN NO DISCOUNT ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testBatteryReplacementWarranty()
{
// TEST SCENARIO: battery replacement warranty
$criteria = new InvoiceCriteria();
$criteria->setServiceType(ServiceType::BATTERY_REPLACEMENT_WARRANTY);
$battery_id = 1038;
$battery = $this->em->getRepository(Battery::class)->find($battery_id);
$criteria->addEntry($battery, null, 1);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::BATTERY_REPLACEMENT_WARRANTY) . ' ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testFuelGasWithServiceFee()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: fuel, gas, service fee
$criteria->setServiceType(ServiceType::EMERGENCY_REFUEL);
// set customer vehicle
$cv_id = 1306614;
$cv = $this->em->getRepository(CustomerVehicle::class)->find($cv_id);
$criteria->setCustomerVehicle($cv);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::EMERGENCY_REFUEL) . ' GAS WITH SERVICE FEE' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testFuelDieselWithServiceFee()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: fuel, diesel, service fee
$criteria->setServiceType(ServiceType::EMERGENCY_REFUEL);
// set customer vehicle
$cv_id = 1306612;
$cv = $this->em->getRepository(CustomerVehicle::class)->find($cv_id);
$criteria->setCustomerVehicle($cv);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::EMERGENCY_REFUEL) . ' DIESEL WITH SERVICE FEE ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testFuelGasWithNoServiceFee()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: fuel, gas, no service fee
$criteria->setServiceType(ServiceType::EMERGENCY_REFUEL);
// set customer vehicle
$cv_id = 1306604;
$cv = $this->em->getRepository(CustomerVehicle::class)->find($cv_id);
$criteria->setCustomerVehicle($cv);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::EMERGENCY_REFUEL) . ' GAS WITH NO SERVICE FEE ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testFuelDieselWithNoServiceFee()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: fuel, diesel, no service fee
$criteria->setServiceType(ServiceType::EMERGENCY_REFUEL);
// set customer vehicle
$cv_id = 1306581;
$cv = $this->em->getRepository(CustomerVehicle::class)->find($cv_id);
$criteria->setCustomerVehicle($cv);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::EMERGENCY_REFUEL) . ' DIESEL WITH NO SERVICE FEE ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testJumpstart()
{
// TEST SCENARIO: jumpstart
$criteria = new InvoiceCriteria();
$criteria->setServiceType(ServiceType::JUMPSTART_TROUBLESHOOT);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::JUMPSTART_TROUBLESHOOT) . ' ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testJumpstartWarranty()
{
// TEST SCENARIO: jumpstart warranty
$criteria = new InvoiceCriteria();
$criteria->setServiceType(ServiceType::JUMPSTART_WARRANTY);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::JUMPSTART_WARRANTY) . ' ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testOverheatAssistanceWithCoolant()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: overheat assistance with coolant
$criteria->setServiceType(ServiceType::OVERHEAT_ASSISTANCE);
// set customer vehicle
$cv_id = 1306614;
$cv = $this->em->getRepository(CustomerVehicle::class)->find($cv_id);
$criteria->setCustomerVehicle($cv);
$criteria->setHasCoolant();
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::OVERHEAT_ASSISTANCE) . ' WITH COOLANT ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testOverheatAssistanceWithoutCoolant()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: overheat assistance without coolant
$criteria->setServiceType(ServiceType::OVERHEAT_ASSISTANCE);
// set customer vehicle
$cv_id = 1306614;
$cv = $this->em->getRepository(CustomerVehicle::class)->find($cv_id);
$criteria->setCustomerVehicle($cv);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::OVERHEAT_ASSISTANCE) . ' WITHOUT COOLANT ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testPostRecharged()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: post recharged
$criteria->setServiceType(ServiceType::POST_RECHARGED);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::POST_RECHARGED) . ' ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testPostReplacement()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: post replacement
$criteria->setServiceType(ServiceType::POST_REPLACEMENT);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::POST_REPLACEMENT) . ' ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testTireRepairWithServiceFee()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: tire repair with service fee
$criteria->setServiceType(ServiceType::TIRE_REPAIR);
// set customer vehicle
$cv_id = 1306612;
$cv = $this->em->getRepository(CustomerVehicle::class)->find($cv_id);
$criteria->setCustomerVehicle($cv);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::TIRE_REPAIR) . ' WITH SERVICE FEE ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
protected function testTireRepairWithoutServiceFee()
{
$criteria = new InvoiceCriteria();
// TEST SCENARIO: tire repair no service fee
$criteria->setServiceType(ServiceType::TIRE_REPAIR);
// set customer vehicle
$cv_id = 1306604;
$cv = $this->em->getRepository(CustomerVehicle::class)->find($cv_id);
$criteria->setCustomerVehicle($cv);
$criteria->setIsTaxable();
$rules = $this->inv_manager->check($criteria);
// error_log(print_r($rules, true));
$invoice_data = $this->inv_manager->compute($criteria, $rules);
foreach ($invoice_data as $data)
{
$invoice_items = $data['invoice_items'];
$total = $data['total'];
foreach ($invoice_items as $invoice_item)
{
error_log('TEST: ' . strtoupper(ServiceType::TIRE_REPAIR) . ' WITHOUT SERVICE FEE ' . $invoice_item->getTitle() . ' ' . $invoice_item->getQuantity() . ' ' . $invoice_item->getPrice());
}
error_log('TOTAL ' . print_r(json_encode($total), true));
}
}
}