diff --git a/src/Command/CreateJOTestDataCommand.php b/src/Command/CreateJOTestDataCommand.php index 196edd51..7aafe444 100644 --- a/src/Command/CreateJOTestDataCommand.php +++ b/src/Command/CreateJOTestDataCommand.php @@ -10,7 +10,9 @@ use Symfony\Component\Console\Output\OutputInterface; use Doctrine\ORM\EntityManagerInterface; use CrEOF\Spatial\PHP\Types\Geometry\Point; + use DateTime; +use DateInterval; use App\Entity\JobOrder; use App\Entity\Rider; @@ -24,6 +26,7 @@ use App\Ramcar\TransactionOrigin; use App\Ramcar\WarrantyClass; use App\Ramcar\ModeOfPayment; use App\Ramcar\JOStatus; +use App\Ramcar\InvoiceStatus; class CreateJOTestDataCommand extends Command { @@ -75,63 +78,96 @@ class CreateJOTestDataCommand extends Command // get current date $current_date = new DateTime(); + // for this month JO + $current_year = $current_date->format('Y'); + $current_month = $current_date->format('M'); + + // for last month JO $date_interval = new DateInterval('P1M'); - $period_date = $current_date->sub($date_interval); + $last_month_date = $current_date->sub($date_interval); - $period_year = $period_date->format('Y'); - $period_month = $period_date->format('m'); - - // insert 15 JOs for last month - for ($i = 1; $i <= 15; $i++) - { - $jo = new JobOrder(); + $last_month_year = $last_month_date->format('Y'); + $last_month_month = $last_month_date->format('M'); - // set customer data - $jo->setCustomerVehicle($cv); - $jo->setCustomer($cv->getCustomer()); + $time_schedule = $current_date->format('h:i A'); - // set hub and rider data - $jo->setRider($rider); - $jo->setHub($rider->getHub()); - - // set JO details - $point = new Point(121.0223, 14.6091); - $type = CMBServiceType::BATTERY_REPLACEMENT_NEW; - $source = TransactionOrigin::CALL; - $advance_order = true; - $warranty_class = WarrantyClass::WTY_PRIVATE; - $status = JOStatus::ASSIGNED; - $delivery_address = '#1234 Moogle Lane'; - $mode_of_payment = ModeOfPayment::CASH; - - // set invoice details - $invoice = new Invoice(); - $invoice_item = new InvoiceItem(); - - // set invoice item details - $invoice_item->setBattery($battery) - ->setTitle($battery->getModel()->getName() - ' ' . $battery->getSize()->getName()) - ->setQuantity(1) - ->setPrice($battery->getSellingPrice()) - ->setInvoice($invoice); - - $invoice->addItem($invoice_item); - - // set invoice details - $invoice->setTotalPrice($battery->getSellingPrice()) - ->setStatus(InvoiceStatus::DRAFT) - ->setVATExclusivePrice($battery->getSellingPrice()) - ->setDiscount(0.0) - ->setTradeIn(0.0) - ->setVAT(0.00) - - $jo->setInvoice($invoice); - - $date_schedule = DateTime::createFromFormat("d M Y h:i A", - - } + $this->createJobOrders($rider, $cv, $battery, $last_month_year, $last_month_month, $time_schedule); + $this->createJobOrders($rider, $cv, $battery, $current_year, $current_month, $time_schedule); } return 0; } + + protected function createJobOrders(Rider $rider, CustomerVehicle $cv, Battery $battery, $year, $month, $time) + { + // insert 15 JOs for last month + for ($i = 1; $i <= 15; $i++) + { + $jo = new JobOrder(); + + // set customer data + $jo->setCustomerVehicle($cv); + $jo->setCustomer($cv->getCustomer()); + + // set hub and rider data + $jo->setRider($rider); + $jo->setHub($rider->getHub()); + + // set JO details + $point = new Point(121.0223, 14.6091); + $s_type = CMBServiceType::BATTERY_REPLACEMENT_NEW; + $source = TransactionOrigin::CALL; + $advance_order = true; + $warranty_class = WarrantyClass::WTY_PRIVATE; + $status = JOStatus::FULFILLED; + $delivery_address = '#1234 Moogle Lane'; + $mode_of_payment = ModeOfPayment::CASH; + + // set invoice details + $invoice = new Invoice(); + $invoice_item = new InvoiceItem(); + + // set invoice item details + $invoice_item->setBattery($battery) + ->setTitle($battery->getModel()->getName() . ' ' . $battery->getSize()->getName()) + ->setQuantity(1) + ->setPrice($battery->getSellingPrice()) + ->setInvoice($invoice); + + $invoice->addItem($invoice_item); + + $this->em->persist($invoice_item); + + // set invoice details + $invoice->setTotalPrice($battery->getSellingPrice()) + ->setStatus(InvoiceStatus::DRAFT) + ->setVATExclusivePrice($battery->getSellingPrice()) + ->setDiscount(0.0) + ->setTradeIn(0.0) + ->setVAT(0.00); + + $this->em->persist($invoice); + + $jo->setInvoice($invoice); + + // for last month + $date_schedule_date = $i . ' ' . $month . ' ' . $year . ' ' . $time; + error_log('Adding JO with date schedule ' . $date_schedule_date); + $date_schedule = DateTime::createFromFormat("d M Y h:i A", $date_schedule_date); + + $jo->setDateSchedule($date_schedule) + ->setCoordinates($point) + ->setAdvanceOrder($advance_order) + ->setServiceType($s_type) + ->setWarrantyClass($warranty_class) + ->setSource($source) + ->setStatus($status) + ->setDeliveryAddress($delivery_address); + + $this->em->persist($jo); + } + + $this->em->flush(); + + } }