$name, 'code' => (string) $code, 'quantity' => (float) $quantity, 'unit' => 'Sztuki', 'taxStake' => $taxStake, 'grossAmount' => (int) $grossAmount, ]; if($discountAmount) { $position['discountAmount'] = (int) $discountAmount; } $this->positions[] = $position; } /** * @param string $type * @param string $email * @param string $fullName * @param string $street * @param string $city * @param string $postalCode * @param string $countryCodeAlpha2 * @param string $idCountryCodeAlpha2 * @param string $idType * @param string $idNumber * * @return Invoice */ public function setBuyer($type, $email, $fullName, $street, $city, $postalCode, $countryCodeAlpha2, $idCountryCodeAlpha2 = '', $idType = '', $idNumber = '') { $array = [ 'type' => $type, 'email' => $email, 'fullName' => $fullName, 'street' => $street, 'city' => $city, 'postalCode' => $postalCode, 'countryCodeAlpha2' => $countryCodeAlpha2, ]; if($idCountryCodeAlpha2) { $array['idCountryCodeAlpha2'] = $idCountryCodeAlpha2; } if($idType) { $array['idType'] = $idType; } if($idNumber) { $array['idNumber'] = $idNumber; } $this->buyer = $array; return $this; } /** * @param string $idCountryCodeAlpha2 * @param string $idNumber * * @return void */ public function setCompanyBuyer($idCountryCodeAlpha2, $idNumber, $fullName = '') { $this->buyer['type'] = self::BUYER_COMPANY; $this->buyer['idCountryCodeAlpha2'] = $idCountryCodeAlpha2; $this->buyer['idType'] = self::ID_TYPE_VAT; $this->buyer['idNumber'] = $idNumber; if($fullName) { $this->buyer['fullName'] = $fullName; } } /** * @return array|string */ public function prepare($isApi) { $array = [ 'buyer' => $this->buyer, 'positions' => $this->positions, ]; return $isApi ? $array : base64_encode(gzencode(json_encode($array), 5)); } /** * @param CartData $cart * @param string $email * @param bool $isApi * * @return array|string */ public static function get($cart, $email, $isApi) { if(!($cart instanceof CartData)) { return []; } $cart = $cart->prepareCartDataArray(); $invoice = new Invoice(); if(isset($cart['items']) && $cart['items']) { foreach($cart['items'] as $item) { $tax = null; try { $tax = constant('self::TAX_' . $item['vat']); } catch(\Error $e) { } if(!$tax) { return []; } $invoice->addItem($item['name'], $item['id'], $item['quantity'], constant('\Imoje\Payment\Invoice::TAX_' . $item['vat']), $item['amount'] ); } $invoice->setBuyer(Invoice::BUYER_PERSON, $email, $cart['address']['billing']['name'], $cart['address']['billing']['street'], $cart['address']['billing']['city'], $cart['address']['billing']['postalCode'], $cart['address']['billing']['country']); return $invoice->prepare($isApi); } return []; } }