Skip to content

Instantly share code, notes, and snippets.

@mirahtadi
Last active March 25, 2016 02:41
Show Gist options
  • Save mirahtadi/2766839c7f4445489c25 to your computer and use it in GitHub Desktop.
Save mirahtadi/2766839c7f4445489c25 to your computer and use it in GitHub Desktop.
Transaction Split
<?php
namespace App\Bundle\TransactionBundle\Manager;
use App\Bundle\ProductBundle\Filter\ProductCategoryFilter;
use App\Bundle\ProductBundle\Repository\ProductCategoryRepository;
use App\Bundle\ProductBundle\Repository\ProductRepository;
use App\Bundle\ReportBundle\Filter\ReportFilter;
use App\Bundle\TransactionBundle\Entity\PaymentType;
use App\Bundle\TransactionBundle\Filter\TransactionFilter;
use App\Bundle\TransactionBundle\Model\TransactionSplit;
use App\Bundle\TransactionBundle\Repository\PaymentNoteRepository;
use App\Bundle\TransactionBundle\Repository\PaymentTypeRepository;
use App\Bundle\TransactionBundle\Repository\TransactionPaymentRepository;
use App\Bundle\TransactionBundle\Repository\TransactionRepository;
use App\Bundle\MainBundle\Exception\ValidationFailedException;
use App\Bundle\TransactionBundle\Entity\Transaction;
use Symfony\Component\Validator\Validator\ValidatorInterface;
class TransactionManager
{
#----------------------------------------------------------------------------------------------
/**
* @param Transaction $transaction
* @param TransactionSplit $transactionSplit
*/
public function splitBooking(Request $request, Transaction $transaction)
{
$transactionSplits = $this->get('serializer')->deserialize('ArrayCollection<FQCN_TransactionSplit>');
foreach ($transactionSplits as $transactionSplit) {
$transactionNew = new Transaction();
$transactionNew->setCustomer($transactionSplit->getCustomer());
$transactionNew->setTransactionPayments($transactionSplit->getTransactionPayments());
$transactionNew->setTransactionProducts($transaction->getTransactionProducts());
// but I want to change qty TransactionProduct to 1. how to do?
$transactionNew->setCreatedAt($transaction->getCreatedAt());
$transactionNew->setPaymentNotes($transaction->getPaymentNotes());
$transactionNew->setAccommodation($transaction->getAccommodation());
$transactionNew->setAccommodationType($transaction->getAccommodationType());
$transactionNew->setAgent($transaction->getAgent());
$transactionNew->setCommission($transaction->getCommission());
$transactionNew->setDate($transaction->getDate());
$transactionNew->setDeleteReason($transaction->getDeleteReason());
$transactionNew->setOutlet($transaction->getOutlet());
$transactionNew->setPhoneNumber($transaction->getPhoneNumber());
$transactionNew->setPickupLocation($transaction->getPickupLocation());
$transactionNew->setProductCategory($transaction->getProductCategory());
$transactionNew->setRemark($transaction->getRemark());
$transactionNew->setRequestTransport($transaction->getRequestTransport());
$transactionNew->setTransactionSource($transaction->getTransactionSource());
$transactionNew->setTransportDateTime($transaction->getTransportDateTime());
$this->save($transactionNew);
}
$this->softDelete($transaction);
}
}
<?php
namespace App\Bundle\TransactionBundle\Model;
use App\Bundle\CustomerBundle\Entity\Customer;
use App\Bundle\TransactionBundle\Entity\TransactionPayment;
use App\Bundle\TransactionBundle\Entity\TransactionProduct;
class TransactionSplit
{
#----------------------------------------------------------------------------------------------
# Private Properties
#----------------------------------------------------------------------------------------------
/**
* @var Customer
*
* @Serializer\Expose()
* @Serializer\Type("App\Bundle\CustomerBundle\Entity\Customer")
* @Serializer\Groups({"customer"})
*/
private $customer;
/**
* @var TransactionProduct[]
*
* @Assert\Valid()
* @Assert\Count(min=1, minMessage = "You must at least have {{ limit }} product")
*
* @Serializer\Expose()
* @Serializer\Type("array<App\Bundle\TransactionBundle\Entity\TransactionProduct>")
* @Serializer\Groups({"transaction_product"})
*/
private $transactionProducts;
/**
* @var TransactionPayment[]
*
* @Assert\Valid()
*
* @Serializer\Expose()
* @Serializer\Type("array<App\Bundle\TransactionBundle\Entity\TransactionPayment>")
* @Serializer\Groups({"transaction_payment"})
*/
private $transactionPayments;
#----------------------------------------------------------------------------------------------
# Properties accessor
#----------------------------------------------------------------------------------------------
/**
* @return Customer
*/
public function getCustomer()
{
return $this->customer;
}
/**
* @param Customer $customer
* @return $this
*/
public function setCustomer(Customer $customer)
{
$this->customer = $customer;
return $this;
}
/**
* @return TransactionProduct[]
*/
public function getTransactionProducts()
{
return $this->transactionProducts;
}
/**
* @param TransactionProduct[] $transactionProducts
* @return $this
*/
public function setTransactionProducts(array $transactionProducts)
{
$this->transactionProducts = $transactionProducts;
return $this;
}
/**
* @return TransactionPayment[]
*/
public function getTransactionPayments()
{
return $this->transactionPayments;
}
/**
* @param TransactionPayment $transactionPayments
* @return $this
*/
public function setTransactionPayments(TransactionPayment $transactionPayments)
{
$this->transactionPayments = $transactionPayments;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment