Hướng dẫn how to generate invoice number in php - cách tạo số hóa đơn trong php

Bạn có thể viết một chức năng trợ giúp tốt trong PHP để sử dụng nó bất cứ nơi nào bạn muốn trong ứng dụng của mình để trả lại số hóa đơn. Hàm trợ giúp sau đây có thể đơn giản hóa quá trình của bạn.

function invoice_num ($input, $pad_len = 7, $prefix = null) {
    if ($pad_len <= strlen($input))
        trigger_error('$pad_len cannot be less than or equal to the length of $input to generate invoice number', E_USER_ERROR);

    if (is_string($prefix))
        return sprintf("%s%s", $prefix, str_pad($input, $pad_len, "0", STR_PAD_LEFT));

    return str_pad($input, $pad_len, "0", STR_PAD_LEFT);
}

// Returns input with 7 zeros padded on the left
echo invoice_num(1); // Output: 0000001

// Returns input with 10 zeros padded
echo invoice_num(1, 10); // Output: 0000000001

// Returns input with prefixed F- along with 7 zeros padded
echo invoice_num(1, 7, "F-"); // Output: F-0000001

// Returns input with prefixed F- along with 10 zeros padded
echo invoice_num(1, 10, "F-"); // Output: F-0000000001

Khi bạn đã viết xong chức năng trợ giúp, bạn không cần sử dụng các chức năng của LPAD hoặc

select OrderNumber from Orders where CustomerID = 57
order by OrderDate DESC limit 1;
0 MYSQL mỗi lần trong truy vấn của bạn để trả về ID với số 0 không có tiền tố. Nếu bạn có quyền truy cập toàn cầu vào chức năng trợ giúp trong toàn bộ ứng dụng, bạn chỉ cần gọi nó bất cứ nơi nào bạn muốn tạo số hóa đơn.

Sau khi tìm nạp kết quả, mã này gọi hàm tạo hóa đơn. Hàm này chấp nhận dữ liệu động làm đối số của nó. Trong một bài viết trước, chúng ta đã thấy cách viết dữ liệu MySQL vào tài liệu PDF.

Mẫu hóa đơn hiển thị số hóa đơn, ngày và đến hạn. Ngoài ra, nó hiển thị danh sách các mặt hàng đã mua và chi tiết khách hàng.

Tập lệnh cơ sở dữ liệu này có dữ liệu cho đơn đặt hàng và bảng sản phẩm. Nhập tập lệnh này để chạy chương trình này trong môi trường của bạn.

Phần này cho thấy các ảnh chụp màn hình đầu ra của ví dụ này.

Ảnh chụp màn hình sau đây hiển thị chế độ xem trang đích hiển thị danh sách đơn đặt hàng.

select OrderNumber from Orders where CustomerID = 57
order by OrderDate DESC limit 1;

Đầu ra này cho thấy ảnh chụp màn hình tài liệu PDF mua hàng thương mại điện tử bên dưới.

select * from OrderDetails where ordernumber = 1;

Sự kết luận

Select o.OrderNumber
  ,o.CustomerID
  ,o.BillingAddressID
  ,o.OrderDate
  ,o.OrderStatus
  ,od.pro_id
  ,od.pro_name
  from Orders o
  INNER JOIN OrderDetails od
    on o.OrderNumber = od.OrderNumber
      where o.OrderNumber = 1

Trong bài viết này, chúng tôi đã tạo ra một ví dụ đơn giản để tạo hóa đơn mua hàng thương mại điện tử ở định dạng PDF.

Chúng tôi đã thấy cách tích hợp thư viện PHP PDF để chạy ví dụ này.

Sau khi tìm nạp kết quả, mã này gọi hàm tạo hóa đơn. Hàm này chấp nhận dữ liệu động làm đối số của nó. Trong một bài viết trước, chúng ta đã thấy cách viết dữ liệu MySQL vào tài liệu PDF.

Mẫu hóa đơn hiển thị số hóa đơn, ngày và đến hạn. Ngoài ra, nó hiển thị danh sách các mặt hàng đã mua và chi tiết khách hàng.

Tập lệnh cơ sở dữ liệu này có dữ liệu cho đơn đặt hàng và bảng sản phẩm. Nhập tập lệnh này để chạy chương trình này trong môi trường của bạn.

Phần này cho thấy các ảnh chụp màn hình đầu ra của ví dụ này.

Tạo hóa đơn mua là một phần của phần mềm ứng dụng thương mại điện tử. Nó có một tài liệu hoặc hóa đơn xác nhận giao dịch giữa người bán và khách hàng. Đó là một yêu cầu pháp lý ở nhiều quốc gia.

Mã này sẽ tạo hóa đơn ở định dạng PDF. Chúng tôi đã thấy cách tạo PDF bằng tập lệnh PHP.

Hướng dẫn how to generate invoice number in php - cách tạo số hóa đơn trong php

Bên trong là gì?

  1. Về ví dụ này
  2. Đơn đặt hàng mua thương mại điện tử với liên kết tạo hóa đơn
  3. Mã PHP để tạo hóa đơn pdf
  4. Tập lệnh cơ sở dữ liệu
  5. Hóa đơn mua hàng thương mại điện tử đầu ra PDF

Về ví dụ này

Đơn đặt hàng mua thương mại điện tử với liên kết tạo hóa đơn

Mã PHP để tạo hóa đơn pdf

Tập lệnh cơ sở dữ liệu

Hóa đơn mua hàng thương mại điện tử đầu ra PDF

Ví dụ này hiển thị danh sách đơn đặt hàng trên một trang đích. Dữ liệu thứ tự này là động từ cơ sở dữ liệu.

Nó có dữ liệu mua hàng với điều khiển HTML để kích hoạt tạo hóa đơn.

Hướng dẫn how to generate invoice number in php - cách tạo số hóa đơn trong php

Đơn đặt hàng mua thương mại điện tử với liên kết tạo hóa đơn

Mã PHP để tạo hóa đơn pdf

Tập lệnh cơ sở dữ liệu

Hóa đơn mua hàng thương mại điện tử đầu ra PDF

Ví dụ này hiển thị danh sách đơn đặt hàng trên một trang đích. Dữ liệu thứ tự này là động từ cơ sở dữ liệu.

index.php

getAllOrders();
?>




CSRF Protection using PHP



    

Generate PDF invoice with FPDF

$v) { ?>
Order Ref Amount Order Status Invoice
">

Nó có dữ liệu mua hàng với điều khiển HTML để kích hoạt tạo hóa đơn.

Tài liệu hóa đơn đầu ra được tạo bởi ví dụ này là ở định dạng PDF. Nó sử dụng thư viện PHP TCPDF để tạo PDF.

Tải xuống TCPDF và đưa nó vào thư mục ứng dụng. Chỉ định đường dẫn của tệp lớp TCPDF trong pdfservice.php

Template/purchase-invoice-template.php



Receipt of Purchase - 


Sender: Phppot
INVOICE
Invoice: # Receiver:
Date:
Payment Due:
$v) { $price = $orderItemResult[$k]["item_price"] * $orderItemResult[$k]["quantity"]; $total += $price; $productResult = $productModel->getProduct($orderItemResult[$k]["product_id"]); ?>
Item Description Price ($) Quantity Subtotal ($)
Total ($)

Kindly make your payment to:
Bank: American Bank of Commerce
A/C: 05346346543634563423
BIC: 23141434

Note: Please send a remittance advice by email to

Mã PHP để tạo hóa đơn pdf

Tập lệnh cơ sở dữ liệu

Hóa đơn mua hàng thương mại điện tử đầu ra PDF

Ví dụ này hiển thị danh sách đơn đặt hàng trên một trang đích. Dữ liệu thứ tự này là động từ cơ sở dữ liệu.

Nó có dữ liệu mua hàng với điều khiển HTML để kích hoạt tạo hóa đơn.

invoice.php

getPdfGenerateValues($_GET["id"]);
$orderItemResult = $orderModel->getOrderItems($result[0]["id"]);
if (! empty($result)) {
    require_once __DIR__ . "/lib/PDFService.php";
    $pdfService = new PDFService();
    $pdfService->generatePDF($result, $orderItemResult);
}

lib/PDFService.php

SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
        $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
        $pdf->SetHeaderData('', PDF_HEADER_LOGO_WIDTH, '', '', array(
            0,
            0,
            0
        ), array(
            255,
            255,
            255
        ));
        $pdf->SetTitle('Invoice - ' . $result[0]["order_invoice"]);
        $pdf->SetMargins(20, 10, 20, true);
        if (@file_exists(dirname(__FILE__) . '/lang/eng.php')) {
            require_once (dirname(__FILE__) . '/lang/eng.php');
            $pdf->setLanguageArray($l);
        }
        $pdf->SetFont('helvetica', '', 11);
        $pdf->AddPage();
        $orderedDate = date('d F Y', strtotime($result[0]["order_at"]));
        $due_date = date("d F Y", strtotime('+' . Config::TERMS . 'days', strtotime($orderedDate)));

        require_once __DIR__ . '/../Template/purchase-invoice-template.php';
        $html = getHTMLPurchaseDataToPDF($result, $orderItemResult, $orderedDate, $due_date);
        $filename = "Invoice-" . $result[0]["order_invoice"];
        $pdf->writeHTML($html, true, false, true, false, '');
        ob_end_clean();
        $pdf->Output($filename . '.pdf', 'I');
    }
}
?>

Tập lệnh cơ sở dữ liệu

Hóa đơn mua hàng thương mại điện tử đầu ra PDF

sql/database.sql

-- --------------------------------------------------------

--
-- Table structure for table `tbl_order`
--

CREATE TABLE `tbl_order` (
  `id` int(11) NOT NULL,
  `order_ref` varchar(255) NOT NULL,
  `order_invoice` int(11) NOT NULL,
  `customer_first_name` varchar(255) NOT NULL,
  `customer_last_name` varchar(255) NOT NULL,
  `customer_address` varchar(255) NOT NULL,
  `customer_company` varchar(255) NOT NULL,
  `amount` decimal(10,2) NOT NULL,
  `order_status` varchar(100) NOT NULL,
  `order_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--
-- Dumping data for table `tbl_order`
--

INSERT INTO `tbl_order` (`id`, `order_ref`, `order_invoice`, `customer_first_name`, `customer_last_name`, `customer_address`, `customer_company`, `amount`, `order_status`, `order_at`) VALUES
(1, '1iRxJtOtAlai4v6LEuGI', 786567, 'David', 'Richard', 'United States', 'Cloud Technologies', '3300.00', 'Completed', '2021-01-12 09:51:38'),
(2, '1iRxJtOtAlai4v6LEuGR', 486231, 'William', 'George', 'United States', 'Smart Tech Info', '500.00', 'Completed', '2021-01-12 09:38:27');

-- --------------------------------------------------------

--
-- Table structure for table `tbl_order_items`
--

CREATE TABLE `tbl_order_items` (
  `id` int(11) NOT NULL,
  `order_id` int(10) UNSIGNED NOT NULL,
  `product_id` int(11) NOT NULL,
  `item_price` decimal(10,2) NOT NULL,
  `quantity` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `tbl_order_items`
--

INSERT INTO `tbl_order_items` (`id`, `order_id`, `product_id`, `item_price`, `quantity`) VALUES
(1, 1, 1, '1500.00', 2),
(2, 1, 2, '300.00', 1),
(6, 2, 3, '500.00', 1);

-- --------------------------------------------------------

--
-- Table structure for table `tbl_product`
--

CREATE TABLE `tbl_product` (
  `id` int(11) NOT NULL,
  `product_title` varchar(255) NOT NULL,
  `price` decimal(10,2) NOT NULL,
  `create_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `tbl_product`
--

INSERT INTO `tbl_product` (`id`, `product_title`, `price`, `create_at`) VALUES
(1, 'FinePix Pro2 3D Camera', '1500.00', '2021-01-11 13:00:22'),
(2, 'Luxury Ultra thin Wrist Watch', '300.00', '2021-01-11 13:00:34'),
(3, 'Luxury Tv', '500.00', '2021-01-11 13:00:34');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `tbl_order`
--
ALTER TABLE `tbl_order`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `tbl_order_items`
--
ALTER TABLE `tbl_order_items`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `tbl_product`
--
ALTER TABLE `tbl_product`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `tbl_order`
--
ALTER TABLE `tbl_order`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `tbl_order_items`
--
ALTER TABLE `tbl_order_items`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT for table `tbl_product`
--
ALTER TABLE `tbl_product`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=31;

Hóa đơn mua hàng thương mại điện tử đầu ra PDF

Ví dụ này hiển thị danh sách đơn đặt hàng trên một trang đích. Dữ liệu thứ tự này là động từ cơ sở dữ liệu.

Nó có dữ liệu mua hàng với điều khiển HTML để kích hoạt tạo hóa đơn.

Hướng dẫn how to generate invoice number in php - cách tạo số hóa đơn trong php

Tài liệu hóa đơn đầu ra được tạo bởi ví dụ này là ở định dạng PDF. Nó sử dụng thư viện PHP TCPDF để tạo PDF.

Hướng dẫn how to generate invoice number in php - cách tạo số hóa đơn trong php

Tải xuống TCPDF và đưa nó vào thư mục ứng dụng. Chỉ định đường dẫn của tệp lớp TCPDF trong pdfservice.php

Mã thế hệ PDF tạo ra một trình xử lý ghi tài liệu PDF. Nó đặt tiêu đề tài liệu, tiêu đề, nội dung cơ thể và nhiều hơn nữa.

Nó chuẩn bị HTML cho nội dung cơ thể của hóa đơn được tạo ra. HTML này nhúng dữ liệu mua hàng từ cơ sở dữ liệu.

Đây là mã HTML cho trang đích để hiển thị danh sách đơn đặt hàng.

Danh sách đơn hàng này hiển thị dữ liệu mua hàng theo hàng như tên sản phẩm, số tiền, ngày mua và hơn thế nữa.

Nó chứa liên kết tạo hóa đơn trong mỗi hàng. Khi nhấp vào liên kết này, hóa đơn mua PDF sẽ mở trong một tab mới.

Các chi tiết đơn hàng là từ cơ sở dữ liệu. Nó sử dụng một định danh duy nhất làm tài liệu tham khảo cho mỗi lần mua.

Mẫu hóa đơn PDF

  • Khi nhấp vào liên kết tạo hóa đơn, mã PHP tích hợp hóa đơn mua hàng thương mại điện tử PDF.
  • Mã này hiển thị mẫu HTML để tạo PDF.
  • Ở phía máy chủ, mã PHP trong tệp Hóa đơn.php tìm nạp dữ liệu đơn đặt hàng từ cơ sở dữ liệu.

Các hoạt động liên quan đến cơ sở dữ liệu nằm trong lớp DataSource ứng dụng.