<?php
namespace App\Entity\Idempiere;
use App\Repository\Idempiere\CBpartnerRepository;
use DateTime;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=CBpartnerRepository::class)
* @ORM\Table(name="c_bpartner")
*/
class CBpartner
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
*/
private $c_bpartner_id;
/**
* @ORM\Column(type="integer")
*/
private $ad_client_id;
/**
* @ORM\Column(type="integer")
*/
private $ad_org_id;
private $ad_org;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\Column(type="string", length=60, nullable=true)
*/
private $name2;
/**
* @ORM\Column(type="string", length=1)
*/
private $isdetailednames;
/**
* @ORM\Column(type="string", length=60, nullable=true)
*/
private $firstname1;
/**
* @ORM\Column(type="string", length=60, nullable=true)
*/
private $firstname2;
/**
* @ORM\Column(type="string", length=60, nullable=true)
*/
private $lastname1;
/**
* @ORM\Column(type="string", length=60, nullable=true)
*/
private $lastname2;
/**
* @ORM\Column(type="string", length=255)
*/
private $taxid;
/**
* @ORM\OneToMany(targetEntity=SmSalestemplate::class, mappedBy="c_bpartner")
*/
private $salestemplate;
/**
* @ORM\OneToMany(targetEntity=COrder::class, mappedBy="c_bpartner")
*/
private $orders;
/**
* @ORM\Column(type="string", length=1)
*/
private $isactive;
/**
* @ORM\Column(type="string", length=1)
*/
private $iscustomer;
/**
* @ORM\Column(type="string", length=255)
*/
private $value;
/**
* @ORM\OneToMany(targetEntity=CBpartnerLocation::class, mappedBy="c_bpartner")
*/
private $c_bpartner_location;
/**
* @ORM\Column(type="string", length=1)
*/
private $issalesrep;
/**
* @ORM\Column(type="string", length=1)
*/
private $ismatriz;
/**
* @ORM\Column(type="string", length=1)
*/
private $issummary;
/**
* @ORM\OneToMany(targetEntity=CInvoice::class, mappedBy="c_bpartner")
*/
private $c_invoices;
/**
* @ORM\OneToMany(targetEntity=MInout::class, mappedBy="c_bpartner")
*/
private $m_inouts;
/**
* @ORM\OneToMany(targetEntity=SmSalesRep::class, mappedBy="c_bpartner")
*/
private $sm_sales_reps;
/**
* @ORM\Column(type="float")
*/
private $totalopenbalance;
/**
* @ORM\Column(type="datetime")
*/
private $firstsale;
/**
* @ORM\Column(type="float")
*/
private $so_creditlimit;
/**
* @ORM\Column(type="string", length=255)
*/
private $description;
/**
* @ORM\Column(type="string", length=1, nullable=true)
*/
private $socreditstatus;
protected array $SoCreditStatus = [
"H" => "Credit.Hold",
"O" => "Credit.OK",
"S" => "Credit.Stop",
"W" => "Credit.Watch",
"X" => "No Credit Check"
];
/**
* @ORM\Column(type="string", length=1)
*/
private $istaxexempt;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $sm_bp_type_id;
/**
* @ORM\ManyToOne(targetEntity=SmBpType::class)
* @ORM\JoinColumn(referencedColumnName="sm_bp_type_id")
*/
private $sm_bp_type;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $sm_bp_segment_cm_area_id;
/**
* @ORM\ManyToOne(targetEntity=SmBpSegmentCmArea::class)
* @ORM\JoinColumn(referencedColumnName="sm_bp_segment_cm_area_id")
*/
private $sm_bp_segment_cm_area;
/**
* @ORM\Column(type="integer")
*/
private $lco_taxidtype_id;
/**
* @ORM\ManyToOne(targetEntity=LcoTaxidtype::class)
* @ORM\JoinColumn(referencedColumnName="lco_taxidtype_id", nullable=false)
*/
private $lco_taxidtype;
/**
* @ORM\Column(type="datetime")
*/
private $created;
/**
* @ORM\Column(type="integer")
*/
private $createdby;
/**
* @ORM\Column(type="datetime")
*/
private $updated;
/**
* @ORM\Column(type="integer")
*/
private $updatedby;
/**
* @ORM\Column(type="string", length=1)
*/
private $isprospect;
/**
* @ORM\Column(type="string", length=1)
*/
private $isonetime;
/**
* @ORM\Column(type="string", length=1)
*/
private $isvendor;
/**
* @ORM\Column(type="string", length=1)
*/
private $isemployee;
/**
* @ORM\Column(type="float", nullable=true)
*/
private $so_creditused;
/**
* @ORM\Column(type="string", length=1, nullable=true)
*/
private $invoicerule;
/**
* @ORM\Column(type="string", length=1, nullable=true)
*/
private $deliveryrule;
/**
* @ORM\Column(type="string", length=1, nullable=true)
*/
private $freightcostrule;
/**
* @ORM\Column(type="string", length=1, nullable=true)
*/
private $deliveryviarule;
/**
* @ORM\Column(type="string", length=1)
*/
private $sendemail;
/**
* @ORM\Column(type="string", length=1)
*/
private $ispotaxexempt;
/**
* @ORM\Column(type="string", length=1)
*/
private $is1099vendor;
/**
* @ORM\Column(type="string", length=1)
*/
private $isusetaxiddigit;
/**
* @ORM\OneToMany(targetEntity=CPayment::class, mappedBy="c_bpartner")
*/
private $c_payments;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $c_bp_group_id;
/**
* @ORM\OneToMany(targetEntity=CBpartnerLocation::class, mappedBy="c_bpartner")
*/
private $address;
public function __construct()
{
$this->salestemplate = new ArrayCollection();
$this->orders = new ArrayCollection();
$this->c_bpartner_location = new ArrayCollection();
$this->c_invoices = new ArrayCollection();
$this->m_inouts = new ArrayCollection();
$this->sm_sales_reps = new ArrayCollection();
$this->c_payments = new ArrayCollection();
}
public function getId(): ?int
{
return $this->getCBpartnerId();
}
public function getAdClientId(): ?int
{
return $this->ad_client_id;
}
public function setAdClientId(int $ad_client_id): self
{
$this->ad_client_id = $ad_client_id;
return $this;
}
public function getAdOrgId(): ?int
{
return $this->ad_org_id;
}
public function setAdOrgId(int $ad_org_id): self
{
$this->ad_org_id = $ad_org_id;
return $this;
}
public function getAdOrg(): ?AdOrg
{
return $this->ad_org;
}
public function setAdOrg(?AdOrg $AdOrg): self
{
$this->ad_org = $AdOrg;
$this->ad_org_id = $AdOrg->getId();
return $this;
}
public function getCBpartnerId(): ?int
{
return $this->c_bpartner_id;
}
public function setCBpartnerId(int $c_bpartner_id): self
{
$this->c_bpartner_id = $c_bpartner_id;
return $this;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getName2(): ?string
{
return $this->name2;
}
public function setName2(?string $name2): self
{
$this->name2 = $name2;
return $this;
}
public function getIsdetailednames(): ?string
{
return $this->isdetailednames;
}
public function setIsdetailednames(string $isdetailednames): self
{
$this->isdetailednames = $isdetailednames;
return $this;
}
public function getFirstname1(): ?string
{
return $this->firstname1;
}
public function setFirstname1(?string $firstname1): self
{
$this->firstname1 = $firstname1;
return $this;
}
public function getFirstname2(): ?string
{
return $this->firstname2;
}
public function setFirstname2(?string $firstname2): self
{
$this->firstname2 = $firstname2;
return $this;
}
public function getLastname1(): ?string
{
return $this->lastname1;
}
public function setLastname1(?string $lastname1): self
{
$this->lastname1 = $lastname1;
return $this;
}
public function getLastname2(): ?string
{
return $this->lastname2;
}
public function setLastname2(?string $lastname2): self
{
$this->lastname2 = $lastname2;
return $this;
}
public function getTaxid(): ?string
{
return $this->taxid;
}
public function setTaxid(string $taxid): self
{
$this->taxid = $taxid;
return $this;
}
/**
* @return Collection|COrder[]
*/
public function getOrders(): Collection
{
return $this->orders;
}
public function addOrder(COrder $order): self
{
if (!$this->orders->contains($order)) {
$this->orders[] = $order;
$order->setCBpartner($this);
}
return $this;
}
public function removeOrder(COrder $order): self
{
if ($this->orders->removeElement($order)) {
// set the owning side to null (unless already changed)
if ($order->getCBpartner() === $this) {
$order->setCBpartner(null);
}
}
return $this;
}
public function isActive(): ?bool
{
return $this->getIsactive() === "Y";
}
public function getIsactive(): ?string
{
return $this->isactive;
}
public function setIsactive(string $isactive): self
{
$this->isactive = $isactive;
return $this;
}
public function getIscustomer(): ?bool
{
return $this->iscustomer == "Y";
}
public function setIscustomer(bool $iscustomer = true): self
{
$this->iscustomer = $iscustomer ? "Y" : "N";
return $this;
}
public function getValue(): ?string
{
return $this->value;
}
public function setValue(string $value): self
{
$this->value = $value;
return $this;
}
/**
* @return Collection|CBpartnerLocation[]
*/
public function getCBpartnerLocation(): Collection
{
return $this->c_bpartner_location;
}
public function addCBpartnerLocation(CBpartnerLocation $cBpartnerLocation): self
{
if (!$this->c_bpartner_location->contains($cBpartnerLocation)) {
$this->c_bpartner_location[] = $cBpartnerLocation;
$cBpartnerLocation->setCBpartner($this);
}
return $this;
}
public function removeCBpartnerLocation(CBpartnerLocation $cBpartnerLocation): self
{
if ($this->c_bpartner_location->removeElement($cBpartnerLocation)) {
// set the owning side to null (unless already changed)
if ($cBpartnerLocation->getCBpartner() === $this) {
$cBpartnerLocation->setCBpartner(null);
}
}
return $this;
}
/**
* @return Collection|CBpartnerLocation[]
*/
public function getBPartnerInvoiceLocation(): Collection
{
$locations = $this->getCBpartnerLocation();
return $locations->filter(function($bplocation) {
return $bplocation->getIsbillto() === true;
});
}
/**
* @return Collection|CBpartnerLocation[]
*/
public function getBPartnerShipmentLocation(): Collection
{
$locations = $this->getCBpartnerLocation();
return $locations->filter(function($bplocation) {
return $bplocation->getIsshipto() === true;
});
}
public function getIssalesrep(): bool
{
return $this->issalesrep === "Y";
}
public function setIssalesrep(bool $issalesrep): self
{
$this->issalesrep = $issalesrep ? "Y" : "N";
return $this;
}
public function IsSalesRep(): bool {
return $this->getIssalesrep();
}
public function getIsmatriz(): ?bool
{
return $this->ismatriz === "Y";
}
public function setIsmatriz(bool $ismatriz): self
{
$this->ismatriz = $ismatriz ? "Y" : "N";
return $this;
}
public function getIssummary(): ?bool
{
return $this->issummary === "Y";
}
public function setIssummary(bool $issummary): self
{
$this->issummary = $issummary ? "Y" : "N";
return $this;
}
/**
* @return Collection|CInvoice[]
*/
public function getCInvoices(): Collection
{
return $this->c_invoices;
}
public function addCInvoice(CInvoice $cInvoice): self
{
if (!$this->c_invoices->contains($cInvoice)) {
$this->c_invoices[] = $cInvoice;
$cInvoice->setCBpartner($this);
}
return $this;
}
public function removeCInvoice(CInvoice $cInvoice): self
{
if ($this->c_invoices->removeElement($cInvoice)) {
// set the owning side to null (unless already changed)
if ($cInvoice->getCBpartner() === $this) {
$cInvoice->setCBpartner(null);
}
}
return $this;
}
/**
* @return Collection|MInout[]
*/
public function getMInouts(): Collection
{
return $this->m_inouts;
}
public function addMInout(MInout $mInout): self
{
if (!$this->m_inouts->contains($mInout)) {
$this->m_inouts[] = $mInout;
$mInout->setCBpartner($this);
}
return $this;
}
public function removeMInout(MInout $mInout): self
{
if ($this->m_inouts->removeElement($mInout)) {
// set the owning side to null (unless already changed)
if ($mInout->getCBpartner() === $this) {
$mInout->setCBpartner(null);
}
}
return $this;
}
/**
* @return Collection|SmSalesRep[]
*/
public function getSmSalesReps(): Collection
{
return $this->sm_sales_reps;
}
public function getTotalopenbalance(): ?float
{
return $this->totalopenbalance;
}
public function setTotalopenbalance(float $totalopenbalance): self
{
$this->totalopenbalance = $totalopenbalance;
return $this;
}
public function getFirstsale(): ?DateTime
{
return $this->firstsale;
}
public function setFirstsale(DateTime $firstsale): self
{
$this->firstsale = $firstsale;
return $this;
}
public function getSoCreditlimit(): ?float
{
return $this->so_creditlimit;
}
public function setSoCreditlimit(float $so_creditlimit): self
{
$this->so_creditlimit = $so_creditlimit;
return $this;
}
public function getDescription(): ?string
{
return $this->description;
}
public function setDescription(string $description): self
{
$this->description = $description;
return $this;
}
public function getSocreditstatus(): ?string
{
return $this->socreditstatus;
}
public function setSocreditstatus(?string $socreditstatus): self
{
$this->socreditstatus = $socreditstatus;
return $this;
}
public function getCreditStatus(): ?string
{
return $this->SoCreditStatus[
$this->getSocreditstatus()
];
}
public function getIstaxexempt(): ?bool
{
return $this->istaxexempt == "Y";
}
public function setIstaxexempt(bool $istaxexempt): self
{
$this->istaxexempt = $istaxexempt ? "Y" : "N";
return $this;
}
public function IsTaxExempt(): ?bool
{
return $this->getIstaxexempt();
}
public function getSmBpTypeId(): ?int
{
return $this->sm_bp_type_id;
}
public function setSmBpTypeId(?int $sm_bp_type_id): self
{
$this->sm_bp_type_id = $sm_bp_type_id;
return $this;
}
public function getSmBpType(): ?SmBpType
{
return $this->sm_bp_type;
}
public function setSmBpType(?SmBpType $sm_bp_type): self
{
$this->sm_bp_type = $sm_bp_type;
return $this;
}
public function getSmBpSegmentCmAreaId(): ?int
{
return $this->sm_bp_segment_cm_area_id;
}
public function setSmBpSegmentCmAreaId(?int $sm_bp_segment_cm_area_id): self
{
$this->sm_bp_segment_cm_area_id = $sm_bp_segment_cm_area_id;
return $this;
}
public function getSmBpSegmentCmArea(): ?SmBpSegmentCmArea
{
return $this->sm_bp_segment_cm_area;
}
public function setSmBpSegmentCmArea(?SmBpSegmentCmArea $sm_bp_segment_cm_area): self
{
$this->sm_bp_segment_cm_area = $sm_bp_segment_cm_area;
return $this;
}
public function getLcoTaxidtypeId(): ?int
{
return $this->lco_taxidtype_id;
}
public function setLcoTaxidtypeId(int $lco_taxidtype_id): self
{
$this->lco_taxidtype_id = $lco_taxidtype_id;
return $this;
}
public function getLcoTaxidtype(): ?LcoTaxidtype
{
return $this->lco_taxidtype;
}
public function setLcoTaxidtype(?LcoTaxidtype $lco_taxidtype): self
{
$this->lco_taxidtype = $lco_taxidtype;
return $this;
}
public function getCreated(): ?\DateTimeInterface
{
return $this->created;
}
public function setCreated(\DateTimeInterface $created): self
{
$this->created = $created;
return $this;
}
public function getCreatedby(): ?int
{
return $this->createdby;
}
public function setCreatedby(int $createdby): self
{
$this->createdby = $createdby;
return $this;
}
public function getUpdated(): ?\DateTimeInterface
{
return $this->updated;
}
public function setUpdated(\DateTimeInterface $updated): self
{
$this->updated = $updated;
return $this;
}
public function getUpdatedby(): ?int
{
return $this->updatedby;
}
public function setUpdatedby(int $updatedby): self
{
$this->updatedby = $updatedby;
return $this;
}
public function getIsprospect(): ?bool
{
return $this->isprospect === "Y";
}
public function setIsprospect(bool $isprospect): self
{
$this->isprospect = $isprospect ? "Y" : "N";
return $this;
}
public function getIsonetime(): ?bool
{
return $this->isonetime === "Y";
}
public function setIsonetime(bool $isonetime): self
{
$this->isonetime = $isonetime ? "Y" : "N";
return $this;
}
public function getIsvendor(): ?bool
{
return $this->isvendor === "Y";
}
public function setIsvendor(bool $isvendor): self
{
$this->isvendor = $isvendor ? "Y" : "N";
return $this;
}
public function getIsemployee(): ?bool
{
return $this->isemployee === "Y";
}
public function setIsemployee(bool $isemployee): self
{
$this->isemployee = $isemployee ? "Y" : "N";
return $this;
}
public function getSoCreditused(): ?float
{
return $this->so_creditused;
}
public function setSoCreditused(?float $so_creditused): self
{
$this->so_creditused = $so_creditused;
return $this;
}
public function getInvoicerule(): ?string
{
return $this->invoicerule;
}
public function setInvoicerule(?string $invoicerule): self
{
$this->invoicerule = $invoicerule;
return $this;
}
public function getDeliveryrule(): ?string
{
return $this->deliveryrule;
}
public function setDeliveryrule(?string $deliveryrule): self
{
$this->deliveryrule = $deliveryrule;
return $this;
}
public function getFreightcostrule(): ?string
{
return $this->freightcostrule;
}
public function setFreightcostrule(?string $freightcostrule): self
{
$this->freightcostrule = $freightcostrule;
return $this;
}
public function getDeliveryviarule(): ?string
{
return $this->deliveryviarule;
}
public function setDeliveryviarule(?string $deliveryviarule): self
{
$this->deliveryviarule = $deliveryviarule;
return $this;
}
public function getSendemail(): ?string
{
return $this->sendemail;
}
public function setSendemail(string $sendemail): self
{
$this->sendemail = $sendemail;
return $this;
}
public function getIspotaxexempt(): ?string
{
return $this->ispotaxexempt === "Y";
}
public function setIspotaxexempt(bool $ispotaxexempt): self
{
$this->ispotaxexempt = $ispotaxexempt ? "Y" : "N";
return $this;
}
public function getIs1099vendor(): ?bool
{
return $this->is1099vendor == "Y";
}
public function setIs1099vendor(bool $is1099vendor): self
{
$this->is1099vendor = $is1099vendor ? "Y" : "N";
return $this;
}
public function getIsusetaxiddigit(): ?bool
{
return $this->isusetaxiddigit === "Y";
}
public function setIsusetaxiddigit(bool $isusetaxiddigit): self
{
$this->isusetaxiddigit = $isusetaxiddigit ? "Y" : "N";
return $this;
}
/**
* @return Collection<int, CPayment>
*/
public function getCPayments(): Collection
{
return $this->c_payments;
}
public function addCPayment(CPayment $cPayment): self
{
if (!$this->c_payments->contains($cPayment)) {
$this->c_payments[] = $cPayment;
$cPayment->setCBpartner($this);
}
return $this;
}
public function removeCPayment(CPayment $cPayment): self
{
if ($this->c_payments->removeElement($cPayment)) {
// set the owning side to null (unless already changed)
if ($cPayment->getCBpartner() === $this) {
$cPayment->setCBpartner(null);
}
}
return $this;
}
public function getCBpGroupId(): ?int
{
return $this->c_bp_group_id;
}
public function setCBpGroupId(?int $c_bp_group_id): self
{
$this->c_bp_group_id = $c_bp_group_id;
return $this;
}
public function getBillLocationId(): int
{
$filtered = array_filter(
$this->address->toArray(),
fn($e) => $e->getIsbillto()
);
$adressList = array_map(
fn($e) => [
'id' => $e->getId(),
'isbillto' => $e->getIsbillto()
],
$filtered
);
$adressList = array_shift($adressList);
return $adressList['id'];
}
}