<?php
namespace OfficeBrain\CustomBundle\OrderBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\Common\Collections\ArrayCollection;

/**
 * OrderMaster
 * 
 * @ORM\Table(name="tbl_order_master", options={"type"="InnoDB","charset"="utf8","collate"="utf8_unicode_ci"})
 * @ORM\Entity(repositoryClass="OfficeBrain\CustomBundle\OrderBundle\Entity\OrderMasterRepository")
 * @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false)
 */
class OrderMaster
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id",type="bigint", length=20 , options={"unsigned"=true})
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var integer
     *
     * @ORM\Column(name="user_id", type="bigint", length=20, nullable=true, options={"unsigned"=true})
     */
    private $userId;

    /**
     * @var integer
     *
     * @ORM\Column(name="guest_id", type="bigint",length=20 ,options={"unsigned"=true}, nullable=true)
     */
    private $guestId;

    /**
     * @var integer
     *
     * @ORM\Column(name="user_type", type="string", length=255, nullable=true)
     */
    private $userType;

    /**
     * @var text
     *
     * @ORM\Column(name="culture", type="text", length=60, nullable=true)
     */
    private $culture = 'en_us';
    /**
     * @var integer
     *
     * @ORM\Column(name="instance_id", type="bigint", length=20, nullable=true, options={"unsigned"=true})
     */
    private $instanceId;
    
    /**
     * @var string
     *
     * @ORM\Column(name="instance_type", type="string", length=255, nullable=true)
     */
    private $instanceType;
    /**
     * @var string
     *
     * @ORM\Column(name="note", type="text", nullable=true)
     */
    private $note;

    /**
     * @var integer
     *
     * @ORM\Column(name="preffered_state", type="bigint", length=20, nullable=true, options={"unsigned"=true})
     */
    private $prefferedState;

    /**
     * @var integer
     *
     * @ORM\Column(name="preffered_distributor_id", type="bigint", length=20, nullable=true, options={"unsigned"=true})
     */
    private $prefferedDistributorId;

    /**
     * @var string
     *
     * @ORM\Column(name="zip_code", type="string", length=255, nullable=true)
     */
    private $zipCode;

    /**
     * @var \Date
     *
     * @ORM\Column(name="on_hand_date", type="date", nullable=true)
     */
    private $onHandDate;

    /**
     * @var integer
     *
     * @ORM\Column(name="coupon_id", type="bigint", length=20, nullable=true, options={"unsigned"=true})
     */
    private $couponId;

    /**
     * @var boolean
     *
     * @ORM\Column(name="is_mail_sent", type="boolean", nullable=true, options={"default"=false})
     */
    private $isMailSent;
    
    /**
     * @var string
     *
     * @ORM\Column(name="price", type="decimal",precision=11, scale=2, options={"default" = 0.00})
     */
    private $price = '0.00';

    /**
     * @var string
     *
     * @ORM\Column(name="tax_total", type="decimal",precision=11, scale=2, options={"default" = 0.00})
     */
    private $taxTotal = '0.00';
    
    /**
     * @var string
     *
     * @ORM\Column(name="customer_number", type="string", nullable=true)
     */
    private $customerNumber;
    
    /**
     * @var string
     *
     * @ORM\Column(name="po_number", type="string", nullable=true)
     */
    private $poNumber;
    
    /**
     * @var string
     *
     * @ORM\Column(name="transaction_id", type="string", nullable=true)
     */
    private $transactionId;
    
    /**
     * @var string
     *
     * @ORM\Column(name="payment_method", type="string", nullable=true)
     */
    private $paymentMethod;
    
    /**
     * @var string
     *
     * @ORM\Column(name="secret_key", type="string", length=255, nullable=true)
     */
    private $secretKey;
    
    /**
     * @var integer
     *
     * @ORM\Column(name="quote_id", type="bigint", length=20, nullable=true, options={"unsigned"=true})
     */
    private $quoteId;

    /**
     * @var string
     *
     * @ORM\Column(name="order_no", type="string", length=255, nullable=true)
     */
    private $orderNo;
    
    /**
     * @var integer
     * @ORM\Column(name="created_uid", type="bigint", length=20, nullable=true, options={"unsigned"=true})
     */
    private $createdUid;

    /**
     * @var integer
     *
     * @ORM\Column(name="updated_uid", type="bigint", length=20, nullable=true, options={"unsigned"=true})
     */
    private $updatedUid;

    /**
     * @var integer
     *
     * @ORM\Column(name="deleted_uid", type="bigint", length=20, nullable=true, options={"unsigned"=true})
     */
    private $deletedUid;
    
    /**
     * @var \DateTime @Gedmo\Timestampable(on="create")
     * @ORM\Column(name="created_at", type="datetime", nullable=true)
     */
    private $createdAt;
    
    /**
     *  @var \DateTime @Gedmo\Timestampable(on="update")
     *
     * @ORM\Column(name="updated_at", type="datetime", nullable=true)
     */
    private $updatedAt;
    
    /**
     * @ORM\OneToMany(targetEntity="OrderItemLine", mappedBy="orderMasterId")
     */
    private $orderItemLine;
    
   /**
     * @ORM\OneToOne(targetEntity="OrderBillingDetail", mappedBy="orderMasterId")
     */
    private $orderBillingDetail;
    
    /**
     * @var \DateTime
     *
     * @ORM\Column(name="deleted_at", type="datetime",nullable=true)
     */
    private $deletedAt;
    
    /**
     * @var integer
     *
     * @ORM\Column(name="erp_id", type="bigint",length=20 ,options={"unsigned"=true}, nullable=true)
     */
    private $erpId;
    
    public function __construct() {
    	$this->orderItemLine = new ArrayCollection();
    }


    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set userId
     *
     * @param integer $userId
     * @return OrderMaster
     */
    public function setUserId($userId)
    {
        $this->userId = $userId;

        return $this;
    }

    /**
     * Get userId
     *
     * @return integer 
     */
    public function getUserId()
    {
        return $this->userId;
    }

    /**
     * Set userType
     *
     * @param string $userType
     * @return OrderMaster
     */
    public function setUserType($userType)
    {
        $this->userType = $userType;

        return $this;
    }

    /**
     * Get userType
     *
     * @return string 
     */
    public function getUserType()
    {
        return $this->userType;
    }
    
    /**
     * Set orderNo
     *
     * @param string $orderNo
     * @return OrderMaster
     */
    public function setOrderNo($orderNo)
    {
        $this->orderNo = $orderNo;

        return $this;
    }

    /**
     * Get orderNo
     *
     * @return string 
     */
    public function getOrderNo()
    {
        return $this->orderNo;
    }

    /**
     * Set instanceId
     *
     * @param integer $instanceId
     * @return OrderMaster
     */
    public function setInstanceId($instanceId)
    {
        $this->instanceId = $instanceId;

        return $this;
    }

    /**
     * Get instanceId
     *
     * @return integer 
     */
    public function getInstanceId()
    {
        return $this->instanceId;
    }

    /**
     * Set instanceType
     *
     * @param string $instanceType
     * @return OrderMaster
     */
    public function setInstanceType($instanceType)
    {
        $this->instanceType = $instanceType;

        return $this;
    }

    /**
     * Get instanceType
     *
     * @return string 
     */
    public function getInstanceType()
    {
        return $this->instanceType;
    }

    /**
     * Set note
     *
     * @param string $note
     * @return OrderMaster
     */
    public function setNote($note)
    {
        $this->note = $note;

        return $this;
    }

    /**
     * Get note
     *
     * @return string 
     */
    public function getNote()
    {
        return $this->note;
    }

    /**
     * Set prefferedState
     *
     * @param integer $prefferedState
     * @return OrderMaster
     */
    public function setPrefferedState($prefferedState)
    {
        $this->prefferedState = $prefferedState;

        return $this;
    }

    /**
     * Get prefferedState
     *
     * @return integer 
     */
    public function getPrefferedState()
    {
        return $this->prefferedState;
    }

    /**
     * Set prefferedDistributorId
     *
     * @param integer $prefferedDistributorId
     * @return OrderMaster
     */
    public function setPrefferedDistributorId($prefferedDistributorId)
    {
        $this->prefferedDistributorId = $prefferedDistributorId;

        return $this;
    }

    /**
     * Get prefferedDistributorId
     *
     * @return integer 
     */
    public function getPrefferedDistributorId()
    {
        return $this->prefferedDistributorId;
    }

    /**
     * Set zipCode
     *
     * @param string $zipCode
     * @return OrderMaster
     */
    public function setZipCode($zipCode)
    {
        $this->zipCode = $zipCode;

        return $this;
    }

    /**
     * Get zipCode
     *
     * @return string 
     */
    public function getZipCode()
    {
        return $this->zipCode;
    }

    /**
     * Set onHandDate
     *
     * @param \DateTime $onHandDate
     * @return OrderMaster
     */
    public function setOnHandDate($onHandDate)
    {
        $this->onHandDate = $onHandDate;

        return $this;
    }

    /**
     * Get onHandDate
     *
     * @return \DateTime 
     */
    public function getOnHandDate()
    {
        return $this->onHandDate;
    }

    /**
     * Set couponId
     *
     * @param integer $couponId
     * @return OrderMaster
     */
    public function setCouponId($couponId)
    {
        $this->couponId = $couponId;

        return $this;
    }

    /**
     * Get couponId
     *
     * @return integer 
     */
    public function getCouponId()
    {
        return $this->couponId;
    }

    /**
     * Set isMailSent
     *
     * @param boolean $isMailSent
     * @return OrderMaster
     */
    public function setIsMailSent($isMailSent)
    {
        $this->isMailSent = $isMailSent;

        return $this;
    }

    /**
     * Get isMailSent
     *
     * @return boolean 
     */
    public function getIsMailSent()
    {
        return $this->isMailSent;
    }

    /**
     * Set secretKey
     *
     * @param string $secretKey
     * @return OrderMaster
     */
    public function setSecretKey($secretKey)
    {
        $this->secretKey = $secretKey;

        return $this;
    }

    /**
     * Get secretKey
     *
     * @return string 
     */
    public function getSecretKey()
    {
        return $this->secretKey;
    }

    /**
     * Set quoteId
     *
     * @param integer $quoteId
     * @return OrderMaster
     */
    public function setQuoteId($quoteId)
    {
        $this->quoteId = $quoteId;

        return $this;
    }

    /**
     * Get quoteId
     *
     * @return integer 
     */
    public function getQuoteId()
    {
        return $this->quoteId;
    }

    /**
     * Set createdUid
     *
     * @param integer $createdUid
     * @return OrderMaster
     */
    public function setCreatedUid($createdUid)
    {
        $this->createdUid = $createdUid;

        return $this;
    }

    /**
     * Get createdUid
     *
     * @return integer 
     */
    public function getCreatedUid()
    {
        return $this->createdUid;
    }

    /**
     * Set updatedUid
     *
     * @param integer $updatedUid
     * @return OrderMaster
     */
    public function setUpdatedUid($updatedUid)
    {
        $this->updatedUid = $updatedUid;

        return $this;
    }

    /**
     * Get updatedUid
     *
     * @return integer 
     */
    public function getUpdatedUid()
    {
        return $this->updatedUid;
    }

    /**
     * Set deletedUid
     *
     * @param integer $deletedUid
     * @return OrderMaster
     */
    public function setDeletedUid($deletedUid)
    {
        $this->deletedUid = $deletedUid;

        return $this;
    }

    /**
     * Get deletedUid
     *
     * @return integer 
     */
    public function getDeletedUid()
    {
        return $this->deletedUid;
    }

    /**
     * Set createdAt
     *
     * @param \DateTime $createdAt
     * @return OrderMaster
     */
    public function setCreatedAt($createdAt)
    {
        $this->createdAt = $createdAt;

        return $this;
    }

    /**
     * Get createdAt
     *
     * @return \DateTime 
     */
    public function getCreatedAt()
    {
        return $this->createdAt;
    }

    /**
     * Set updatedAt
     *
     * @param \DateTime $updatedAt
     * @return OrderMaster
     */
    public function setUpdatedAt($updatedAt)
    {
        $this->updatedAt = $updatedAt;

        return $this;
    }

    /**
     * Get updatedAt
     *
     * @return \DateTime 
     */
    public function getUpdatedAt()
    {
        return $this->updatedAt;
    }

    /**
     * Set deletedAt
     *
     * @param \DateTime $deletedAt
     * @return OrderMaster
     */
    public function setDeletedAt($deletedAt)
    {
        $this->deletedAt = $deletedAt;

        return $this;
    }

    /**
     * Get deletedAt
     *
     * @return \DateTime 
     */
    public function getDeletedAt()
    {
        return $this->deletedAt;
    }

    /**
     * Add orderItemLine
     *
     * @param \OfficeBrain\CustomBundle\OrderBundle\Entity\OrderItemLine $orderItemLine
     * @return OrderMaster
     */
    public function addOrderItemLine(\OfficeBrain\CustomBundle\OrderBundle\Entity\OrderItemLine $orderItemLine)
    {
        $this->orderItemLine[] = $orderItemLine;

        return $this;
    }

    /**
     * Remove orderItemLine
     *
     * @param \OfficeBrain\CustomBundle\OrderBundle\Entity\OrderItemLine $orderItemLine
     */
    public function removeOrderItemLine(\OfficeBrain\CustomBundle\OrderBundle\Entity\OrderItemLine $orderItemLine)
    {
        $this->orderItemLine->removeElement($orderItemLine);
    }

    /**
     * Get orderItemLine
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getOrderItemLine()
    {
        return $this->orderItemLine;
    }

    /**
     * Set orderBillingDetail
     *
     * @param \OfficeBrain\CustomBundle\OrderBundle\Entity\OrderBillingDetail $orderBillingDetail
     * @return OrderMaster
     */
    public function setOrderBillingDetail(\OfficeBrain\CustomBundle\OrderBundle\Entity\OrderBillingDetail $orderBillingDetail = null)
    {
        $this->orderBillingDetail = $orderBillingDetail;

        return $this;
    }

    /**
     * Get orderBillingDetail
     *
     * @return \OfficeBrain\CustomBundle\OrderBundle\Entity\OrderBillingDetail 
     */
    public function getOrderBillingDetail()
    {
        return $this->orderBillingDetail;
    }

    /**
     * Set price
     *
     * @param string $price
     *
     * @return OrderMaster
     */
    public function setPrice($price)
    {
        $this->price = $price;

        return $this;
    }

    /**
     * Get price
     *
     * @return string
     */
    public function getPrice()
    {
        return $this->price;
    }

      /**
     * Set taxTotal
     *
     * @param string $taxTotal
     *
     * @return OrderMaster
     */
    public function setTaxTotal($taxTotal)
    {
        $this->taxTotal = $taxTotal;

        return $this;
    }

    /**
     * Get taxTotal
     *
     * @return string
     */
    public function getTaxTotal()
    {
        return $this->taxTotal;
    }
    
    /**
     * Set customerNumber
     *
     * @param string $customerNumber
     *
     * @return OrderMaster
     */
    public function setCustomerNumber($customerNumber)
    {
    	$this->customerNumber = $customerNumber;
    
    	return $this;
    }
    
    /**
     * Get customerNumber
     *
     * @return string
     */
    public function getCustomerNumber()
    {
    	return $this->customerNumber;
    }

    /**
     * Set poNumber
     *
     * @param string $poNumber
     *
     * @return OrderMaster
     */
    public function setPoNumber($poNumber)
    {
        $this->poNumber = $poNumber;

        return $this;
    }

    /**
     * Get poNumber
     *
     * @return string
     */
    public function getPoNumber()
    {
        return $this->poNumber;
    }

    /**
     * Set transactionId
     *
     * @param string $transactionId
     *
     * @return OrderMaster
     */
    public function setTransactionId($transactionId)
    {
        $this->transactionId = $transactionId;

        return $this;
    }

    /**
     * Get transactionId
     *
     * @return string
     */
    public function getTransactionId()
    {
        return $this->transactionId;
    }

    /**
     * Set paymentMethod
     *
     * @param string $paymentMethod
     *
     * @return OrderMaster
     */
    public function setPaymentMethod($paymentMethod)
    {
        $this->paymentMethod = $paymentMethod;

        return $this;
    }

    /**
     * Get paymentMethod
     *
     * @return string
     */
    public function getPaymentMethod()
    {
        return $this->paymentMethod;
    }

    /**
     * Set erpId
     *
     * @param integer $erpId
     *
     * @return OrderMaster
     */
    public function setErpId($erpId)
    {
        $this->erpId = $erpId;

        return $this;
    }

    /**
     * Get erpId
     *
     * @return integer
     */
    public function getErpId()
    {
        return $this->erpId;
    }

    /**
     * Set culture
     *
     * @param string $culture
     *
     * @return OrderMaster
     */
    public function setCulture($culture)
    {
        $this->culture = $culture;

        return $this;
    }

    /**
     * Get culture
     *
     * @return string
     */
    public function getCulture()
    {
        return $this->culture;
    }
    /**
     * Set guestId
     *
     * @param integer $guestId
     *
     * @return OrderMaster
     */
    public function setGuestId($guestId)
    {
    	$this->guestId = 0;
    
    	return $this;
    }
    
    /**
     * Get guestId
     *
     * @return integer
     */
    public function getGuestId()
    {
    	return $this->guestId;
    }
}
