You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
xshop/docs/15-invoice.md

6.7 KiB

Invoice, Order, and Quantity Models

The Invoice, Order, and Quantity models work together to facilitate order processing, invoicing, and inventory management within your application. These models enable the recording of customer transactions, tracking of orders, and management of stock quantities.

Invoice Model

The Invoice model represents a record of a completed transaction between the customer and the business, detailing the items purchased and the associated costs.

Fields Description

1. id

  • Type: Integer
  • Description: A unique identifier for each invoice. This field is automatically generated and serves as the primary key for the model.

2. customer_id

  • Type: Unsigned Big Integer
  • Description: The ID of the customer associated with this invoice. This establishes a foreign key relationship with the Customer model.

3. status

  • Type: Enum
  • Description: The current status of the invoice, defined in the Invoice model's class variable $invoiceStatus. The default is "PENDING".

4. total_price

  • Type: Unsigned Big Integer (Nullable)
  • Description: The total amount due on the invoice. The default value is 0, and this field can be NULL until calculated.

5. count

  • Type: Integer (Nullable)
  • Description: The total number of items included in the invoice. The default value is 0.

6. meta

  • Type: JSON (Nullable)
  • Description: Additional metadata related to the invoice, useful for storing extra information in JSON format.

7. discount_id

  • Type: Unsigned Big Integer (Nullable)
  • Description: The ID of any discount applied to the invoice. This establishes a foreign key relationship with the Discount model.

8. desc

  • Type: Text (Nullable)
  • Description: A description or notes about the invoice. This field is optional.

9. hash

  • Type: String (Max Length: 32) (Nullable, Unique)
  • Description: A unique hash identifier for the invoice, used for tracking and referencing.

10. transport_id

  • Type: Unsigned Big Integer (Nullable)
  • Description: The ID of the transport method used for the invoice. This establishes a foreign key relationship with the Transport model.

11. transport_price

  • Type: Unsigned Big Integer
  • Description: The cost associated with the transport method. Default value is 0.

12. credit_price

  • Type: Unsigned Big Integer
  • Description: The amount of credit applied to this invoice. Default value is 0.

13. reserve

  • Type: Boolean
  • Description: Indicates whether the items on the invoice are reserved. Default value is 0.

14. invoice_id

  • Type: Unsigned Big Integer (Nullable)
  • Description: This field can be used for linking to other invoices, creating relationships between them.

15. address_alt

  • Type: String (Nullable)
  • Description: An alternative address for delivery or billing purposes.

16. address_id

  • Type: Unsigned Big Integer (Nullable)
  • Description: The ID of the associated address for delivery, establishing a foreign key relationship with the Address model.

17. tracking_code

  • Type: String (Nullable)
  • Description: A code used for tracking shipment of the order associated with the invoice.

Summary

The Invoice model provides a structured representation of a financial transaction, including customer details, status, payment information, and associated products.


Order Model

The Order model represents a specific item or service being purchased within an invoice, linking the invoice to products.

Fields Description

1. id

  • Type: Integer
  • Description: A unique identifier for each order. This field is automatically generated and serves as the primary key for the model.

2. invoice_id

  • Type: Unsigned Big Integer
  • Description: The ID of the invoice associated with this order. Establishes a foreign key relationship with the Invoice model.

3. product_id

  • Type: Unsigned Big Integer
  • Description: The ID of the product being ordered. Establishes a foreign key relationship with the Product model.

4. quantity_id

  • Type: Unsigned Big Integer (Nullable)
  • Description: The ID of the specific quantity or stock item. This is optional and can be used for stock management.

5. count

  • Type: Integer (Nullable)
  • Description: The quantity of the product being ordered. The default value is 1.

6. price_total

  • Type: Unsigned Integer
  • Description: The total price for the ordered product, typically calculated as quantity * unit price.

7. data

  • Type: JSON (Nullable)
  • Description: This field allows for flexible storage of additional information related to the order, in JSON format.

Summary

The Order model provides a detailed structure for managing individual items within an invoice, allowing for clear tracking of purchases.


Quantity Model

The Quantity model is designed to manage inventory levels for specific products, allowing for precise tracking of stock.

Fields Description

1. id

  • Type: Integer
  • Description: A unique identifier for each quantity record. This field is automatically generated and serves as the primary key for the model.

2. product_id

  • Type: Unsigned Big Integer
  • Description: The ID of the product associated with this quantity record. Establishes a foreign key relationship with the Product model.

3. count

  • Type: Unsigned Integer
  • Description: The current stock level of the product. The default value is 0.

4. price

  • Type: Unsigned Big Integer
  • Description: The price of the product associated with this quantity record. The default value is 0.

5. image

  • Type: Unsigned Big Integer (Nullable)
  • Description: The ID of an associated image for the product. This field is optional.

6. data

  • Type: Long Text (Nullable)
  • Description: Additional data related to the inventory record, allowing for flexible storage of information.

Summary

The Quantity model allows for effective inventory management by tracking stock levels, prices, and additional information related to specific products.


Relationships Overview

  • The Invoice model is linked to multiple Order records through the invoice_id.
  • Each Order can reference a specific Product and potentially a Quantity.
  • The Quantity model is related to Products to accurately reflect inventory levels.

By integrating the Invoice, Order, and Quantity models, your application can handle full e-commerce functionalities, including invoicing, order tracking, and stock management.