Làm cách nào tôi có thể nhận được giá chiết khấu bằng PHP?

Phiên bản chính mới này đang chuyển gói sang các khả năng cấu hình và linh hoạt hơn nói chung

Một trong những điểm khác biệt chính là chúng tôi đã thay thế

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
3 bằng
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
4 dưới mui xe. Điều này giới thiệu rất nhiều thay đổi đột phá, chủ yếu là về các phương thức khởi tạo hiện phản ánh API của brick/money để giữ cho mọi thứ thân thiện với nhà phát triển. Nhánh
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
5 sẽ vẫn khả dụng và duy trì trong một thời gian, nhưng chúng tôi thực sự khuyên bạn nên cập nhật lên
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
6

Sử dụng thư viện

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
4 cơ bản, đối tượng Giá đơn giản này cho phép làm việc với các giá trị tiền tệ tổng hợp phức tạp bao gồm loại trừ, bao gồm, VAT (và các loại thuế tiềm năng khác) và số tiền chiết khấu. Tính năng này giúp tính toán giá hiển thị cuối cùng an toàn và dễ dàng hơn mà không phải lo lắng về cấu trúc của chúng

Cài đặt

composer require whitecube/php-prices

Bắt đầu

Mỗi đối tượng

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
8 có một phiên bản
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
9 được coi là số lượng không thay đổi, theo đơn vị & độc quyền của mặt hàng. Tất cả các hoạt động tổng hợp, chẳng hạn như thêm VAT hoặc áp dụng chiết khấu, được thêm vào trên giá trị cơ sở này

________số 8

Thực tế phổ biến và luôn luôn tốt nhất là làm việc với số tiền được biểu thị bằng đơn vị tiền tệ nhỏ nhất (giá trị nhỏ) chẳng hạn như "xu"

Có một số cách thuận tiện để lấy phiên bản

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
8

Phương thức Sử dụng giá trị chính Sử dụng giá trị phụXác định đơn vịConstructor
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
01
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
01
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
03Brick/Money API
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
04
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
05-API Tiền tệ-
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
06
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
07Chuỗi phân tích cú pháp
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
08-
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
09

Từ nhà xây dựng

Bạn có thể đặt giá trị cơ bản này bằng cách khởi tạo Giá trực tiếp với phiên bản

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
9 mong muốn

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
0

Từ các phương thức Brick/Money-like

Để thuận tiện, cũng có thể sử dụng phương pháp rút gọn Money factory

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
1

Sử dụng các lệnh gọi tĩnh này, bạn không thể xác định trực tiếp số lượng hoặc đơn vị bằng các phương thức hàm tạo

Để biết thêm thông tin về tất cả các nhà xây dựng Brick/Money có sẵn, vui lòng xem tài liệu của họ

Từ các phương thức mã tiền tệ

Bạn cũng có thể tạo một phiên bản trực tiếp với đơn vị tiền tệ và số lượng dự định bằng cách sử dụng mã ISO đơn vị tiền tệ gồm 3 ký tự

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00

Sử dụng các cuộc gọi tĩnh này, tất cả các giá trị tiền tệ được coi là giá trị nhỏ (e. g. xu)

Để biết danh sách tất cả các loại tiền tệ ISO 4217 có sẵn, hãy xem định nghĩa đồng tiền tệ của Brick/Money

Từ các giá trị chuỗi được phân tích cú pháp

Ngoài ra, giá cũng có thể được phân tích cú pháp từ chuỗi "giá trị tiền tệ thô". Phương pháp này có thể hữu ích nhưng phải luôn được sử dụng cẩn thận vì nó có thể tạo ra kết quả không mong muốn trong một số tình huống khó khăn, đặc biệt là khi "đoán" tiền tệ

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
0

Phân tích chuỗi định dạng là một chủ đề phức tạp. Thông tin thêm về phân tích giá trị chuỗi bên dưới

Truy cập các đối tượng Tiền (getters)

Sau khi được đặt, số tiền cơ sở có thể được truy cập bằng phương pháp

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
41

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
4

Lấy phiên bản tiền tệ thật dễ dàng

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
6

Tổng số tiền độc quyền (với tất cả các sửa đổi trừ VAT)

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
7

Tổng số tiền đã bao gồm (đã áp dụng tất cả các công cụ sửa đổi và thuế GTGT)

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
8

Các biến thuế GTGT

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
0

So sánh số tiền

Có thể kiểm tra xem tổng số tiền bao gồm của một đối tượng giá lớn hơn, nhỏ hơn hay bằng một giá trị khác bằng cách sử dụng phương thức

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
42

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
1

Để thuận tiện, cũng có một phương thức

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
43

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
2

Nếu bạn không muốn so sánh các giá trị sửa đổi cuối cùng, có một phương thức

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
44

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
3

Điều chỉnh giá cơ sở

Đối tượng giá sẽ chuyển tiếp tất cả lệnh gọi phương thức API

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
9 đến giá trị cơ sở của nó

⚠️ Cảnh báo . Đối lập với đối tượng Tiền, đối tượng Giá không phải là bất biến. Do đó, các hoạt động như cộng, trừ, v.v. sẽ trực tiếp sửa đổi giá trị cơ bản của giá thay vì trả về một phiên bản mới.

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
4

Vui lòng tham khảo tài liệu của

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
4 để biết danh sách đầy đủ các tính năng khả dụng

💡Rất vui được biết. Bất cứ khi nào có thể, bạn nên sử dụng công cụ sửa đổi để thay đổi giá vì giá trị cơ sở của nó có nghĩa là không đổi. Để biết thêm thông tin về bổ ngữ, vui lòng tham khảo phần "Thêm bổ ngữ" bên dưới

Đặt đơn vị (số lượng)

Hành vi mặc định của gói này là coi giá cơ bản là giá "trên mỗi đơn vị". Khi không có đơn vị nào được chỉ định, nó sẽ mặc định là

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
47. Vì "đơn vị" có thể là bất cứ thứ gì từ một số tích không chia được cho đến một phép đo, nên chúng luôn được chuyển đổi thành số thực

Bạn có thể đặt số lượng đơn vị (hoặc "số lượng" nếu bạn muốn) trong quá trình khởi tạo

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
5

hoặc sửa đổi nó sau bằng phương pháp

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
48

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
6

Bạn có thể trả lại số lượng đơn vị bằng cách sử dụng phương thức

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
49 (luôn luôn là ____260)

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
7

Đặt VAT

VAT có thể được thêm vào bằng cách cung cấp giá trị tương đối của nó (ví dụ:. 21%)

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
8

Sau khi được đặt, đối tượng giá sẽ có thể cung cấp nhiều thông tin liên quan đến VAT

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
9

Đặt công cụ sửa đổi

Công cụ sửa đổi là tất cả các hoạt động tùy chỉnh mà doanh nghiệp cần áp dụng cho giá trước khi hiển thị trên hóa đơn. Chúng bao gồm từ giảm giá đến thuế, bao gồm các quy tắc tùy chỉnh và phiếu giảm giá. Đây là những lý do chính khiến gói này tồn tại

giảm giá

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
00

Thuế (ngoài VAT)

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
01

Các loại công cụ sửa đổi tùy chỉnh

Đôi khi các công cụ sửa đổi không thể được phân loại thành "giảm giá" hoặc "thuế", trong trường hợp đó, bạn có thể thêm loại công cụ sửa đổi của riêng mình

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
02

💡Rất vui được biết. Các loại công cụ sửa đổi (

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
61,
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
62 hoặc của riêng bạn) rất hữu ích để lọc, nhóm và hiển thị tổng phụ hoặc chi tiết xây dựng giá. Thông tin thêm trong phần "Hiển thị chi tiết sửa đổi" bên dưới

công cụ sửa đổi phức tạp

Hầu hết thời gian, các công cụ sửa đổi phức tạp hơn để xác định so với các thao tác "+" hoặc "-" đơn giản. Tùy thuộc vào mức độ phức tạp, có một số tùy chọn cho phép bạn định cấu hình bộ sửa đổi của mình theo ý muốn

công cụ sửa đổi đóng cửa

Thay vì cung cấp một giá trị tiền tệ cho các công cụ sửa đổi, bạn có thể sử dụng một bao đóng sẽ nhận được một phiên bản

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
63. Đối tượng này sau đó có thể được sử dụng để thực hiện một số thao tác trên giá trị giá. hoạt động có sẵn là

MethodDescription
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
64Đăng ký một cuộc gọi phương thức
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
65 trên đối tượng
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
66.
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
67Đăng ký một cuộc gọi phương thức
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
68 trên đối tượng
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
66.
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
70Đăng ký một cuộc gọi phương thức
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
71 trên đối tượng
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
66.
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
73Đăng ký một cuộc gọi phương thức
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
74 trên đối tượng
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
66.
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
76Đăng ký một cuộc gọi phương thức
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
76 trên đối tượng
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
66

Tất cả các phương pháp này có cùng chữ ký như tương đương với

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
9 của chúng. Lý do chúng tôi không sử dụng cùng tên phương thức là để ngụ ý khả năng thay đổi đối tượng

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
03

Hơn nữa, bằng cách sử dụng công cụ sửa đổi bao đóng, bạn cũng có thể thêm các cấu hình hữu ích khác, chẳng hạn như

MethodDefaultDescription_______280
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
81Xác định mã định danh trên công cụ sửa đổi. Đây có thể là bất kỳ thứ gì và mục đích chính của nó là làm cho công cụ sửa đổi có thể nhận dạng được trên màn hình, chẳng hạn như khóa dịch hoặc tên lớp CSS.
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
82
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
83Cho biết công cụ sửa đổi nên được áp dụng trước (
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
83) hay sau (
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
85) VAT đã được tính. Thông tin thêm về tính năng này bên dưới.
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
86______285Cho biết liệu các phép toán
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
64 và
use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
67 có xác định số tiền "trên mỗi đơn vị" thay vì cung cấp một số tiền cố định sẽ được áp dụng bất kể số lượng hay không.
use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
00
use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
01Xác định càng nhiều thuộc tính sửa đổi bổ sung càng tốt. Điều này có thể rất hữu ích để hiển thị các công cụ sửa đổi được áp dụng trong các giao diện người dùng phức tạp

lớp sửa đổi

Để linh hoạt và dễ đọc hơn nữa, cũng có thể trích xuất tất cả các tính năng này vào lớp riêng của chúng

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
04

Các lớp này phải triển khai giao diện

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
02, sau đó trông giống như thế này

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
05

Nếu cần, cũng có thể chuyển đối số cho các lớp tùy chỉnh này từ cấu hình Giá

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
06

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
07

Trước hay sau VAT?

Tùy thuộc vào bản chất của công cụ sửa đổi, VAT có thể được áp dụng trước hoặc sau khi can thiệp vào giá cuối cùng. Tất cả các công cụ sửa đổi có thể được cấu hình để được thực thi trong một trong các giai đoạn này

Theo mặc định, các công cụ sửa đổi được thêm vào trước khi VAT được áp dụng, nghĩa là rất có thể chúng cũng sẽ sửa đổi giá trị VAT. Để ngăn chặn điều đó, có thể thêm một công cụ sửa đổi vào đầu VAT được tính. Nói một cách hợp pháp, điều này thực sự khá hiếm nhưng tại sao không

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
08

Trong các lớp tùy chỉnh, điều này được xử lý bằng phương thức

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
03

⚠️ Cảnh báo . Áp dụng công cụ sửa đổi sau VAT sẽ thay đổi thứ tự thực hiện công cụ sửa đổi. Đầu tiên, giá sẽ áp dụng tất cả các công cụ sửa đổi sẽ được thực hiện trước VAT (theo thứ tự xuất hiện), sau đó là VAT, tiếp theo là các công cụ sửa đổi còn lại (cũng theo thứ tự xuất hiện).

Giá bao gồm sẽ chứa tất cả các yếu tố sửa đổi (trước và sau VAT), nhưng giá độc quyền chỉ chứa các yếu tố điều chỉnh "trước VAT" theo mặc định. Nếu bạn coi các công cụ sửa đổi "sau VAT" là một phần của giá độc quyền, bạn luôn có thể tính chúng bằng cách cung cấp ____ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
09

Hiển thị chi tiết sửa đổi

Khi gỡ lỗi hoặc xây dựng giao diện người dùng phức tạp, thường cần truy xuất toàn bộ lịch sử sửa đổi Giá. Điều này có thể được thực hiện bằng cách sử dụng phương pháp

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
06 sau khi tất cả các công cụ sửa đổi đã được thêm vào phiên bản Giá

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
10

Mỗi mục lịch sử chứa số tiền được áp dụng cho tổng giá. Nếu bạn muốn truy vấn những sửa đổi này với giá trị "trên mỗi đơn vị" của chúng

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
11

Lọc lịch sử này dựa trên các loại công cụ sửa đổi

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
12

Hầu hết thời gian bạn sẽ không cần tất cả dữ liệu từ phương pháp

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
06, chỉ tổng số sửa đổi. Chúng có thể được trả lại bằng cách sử dụng các phương pháp
use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
08,
use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
09 và chung chung
use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
10

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
13

đầu ra

Theo mặc định, tất cả các giá trị tiền tệ được xử lý được bao bọc trong một đối tượng

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
9. Đây phải là cách duy nhất để thao tác các giá trị này để tránh các lỗi xấp xỉ thập phân

Hiển thị giá dưới dạng chuỗi

Có rất nhiều cách khác nhau để định dạng giá hiển thị và ứng dụng của bạn chắc chắn có những nhu cầu riêng phải được tôn trọng. Mặc dù có thể xử lý định dạng giá trực tiếp từ các đối tượng

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
9 được trả về, nhưng chúng tôi cũng đã bao gồm một trình định dạng Giá thuận tiện. Xin lưu ý rằng hành vi mặc định của nó dựa trên PHP813 của PHP (theo mặc định, nó sử dụng ngôn ngữ hiện tại, xem
use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
14 để biết thêm thông tin)

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
14

Để định dạng bằng ngôn ngữ khác, hãy cung cấp tên ngôn ngữ mong muốn làm thông số thứ hai

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
15

Đối với các trường hợp sử dụng tùy chỉnh nâng cao, hãy sử dụng phương pháp

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
15 để cung cấp chức năng định dạng tùy chỉnh

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
16

Phương thức

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
15 chấp nhận hàm đóng, tên lớp Trình định dạng hoặc thể hiện Trình định dạng. Hai tùy chọn cuối cùng nên mở rộng cả
use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
17

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
17

Để linh hoạt hơn nữa, có thể xác định nhiều trình định dạng được đặt tên và gọi chúng bằng phương thức tĩnh động của riêng chúng

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
18

Xin lưu ý rằng các thông số bổ sung có thể được chuyển tiếp đến trình định dạng tùy chỉnh của bạn

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
19

JSON

Giá có thể được sắp xếp theo thứ tự thành JSON và bù nước bằng phương pháp

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
18, có thể hữu ích khi lưu trữ/truy xuất giá từ cơ sở dữ liệu hoặc API bên ngoài chẳng hạn

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
0

💡Rất vui được biết. bạn cũng có thể sử dụng

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
19 để tạo một đối tượng Giá từ một mảng kết hợp, miễn là nó chứa các khóa
use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
20,
use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
21,
use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
22 và
use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
23

Phân tích giá trị

Có một số phương thức khả dụng sẽ cho phép chuyển đổi giá trị chuỗi tiền tệ thành đối tượng Giá. Phương thức chung

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
24 sẽ cố gắng đoán loại tiền tệ từ chuỗi đã cho

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
1

Để điều này hoạt động, chuỗi phải luôn chứa chỉ báo về loại tiền đang được sử dụng (có thể là mã ISO hoặc ký hiệu hợp lệ). Khi sử dụng các ký hiệu, hãy lưu ý rằng một số trong số chúng (ví dụ: ____825) được sử dụng bằng nhiều loại tiền tệ, dẫn đến kết quả không rõ ràng

Khi bạn chắc chắn Tiền tệ ISO nào có liên quan, bạn nên chuyển trực tiếp nó làm tham số thứ hai của phương thức

use Whitecube\Price\Price;

$steak = Price::EUR(1850)   // Steak costs €18.50/kg
    ->setUnits(1.476)       // Customer had 1.476kg, excl. total is €27.31
    ->setVat(6)             // There is 6% VAT, incl. total is €28.95
    ->addTax(50)            // There also is a €0.50/kg tax (before VAT), incl. total is €29.73
    ->addDiscount(-100);    // We granted a €1.00/kg discount (before VAT), incl. total is €28.16
26

use Whitecube\Price\Price;

$single = Price::EUR(500);                      // 1 x €5.00
$multiple = Price::USD(500, 4);                 // 4 x $5.00
2

Khi sử dụng trình phân tích cú pháp tiền tệ chuyên dụng, tất cả các đơn vị/ký hiệu và ký tự không phải là số đều bị bỏ qua


🔥Tài trợ

Nếu bạn phụ thuộc vào gói này trong các ứng dụng sản xuất của mình, hãy cân nhắc tài trợ cho chúng tôi. Đó là cách tốt nhất để giúp chúng tôi tiếp tục làm những gì chúng tôi thích làm. tạo phần mềm mã nguồn mở tuyệt vời

Đóng góp

Vui lòng đề xuất các thay đổi, yêu cầu các tính năng mới hoặc tự sửa lỗi. Chúng tôi chắc chắn rằng vẫn còn rất nhiều cải tiến có thể được thực hiện và chúng tôi rất sẵn lòng hợp nhất các yêu cầu kéo hữu ích

Cảm ơn

Được tạo bằng❤️ cho mã nguồn mở

Tại Whitecube, chúng tôi sử dụng rất nhiều phần mềm mã nguồn mở như một phần công việc hàng ngày của mình. Vì vậy, khi chúng tôi có cơ hội để đền đáp lại điều gì đó, chúng tôi vô cùng phấn khích

Chúng tôi hy vọng bạn sẽ thích đóng góp nhỏ này của chúng tôi và rất muốn nhận được phản hồi từ bạn nếu bạn thấy nó hữu ích trong các dự án của mình. Theo dõi chúng tôi trên Twitter để biết thêm thông tin cập nhật