This commit is contained in:
hero920103 committed 2026-10-19 01:13:17 +08:00
1 parent 5718a00e31
commit 1850ac640e
226 files changed
+37772 -12071

No files matched your search

+23 -21
View File
@@ -1,21 +1,23 @@
package models
import "time"
// AdminRole 平台角色表 yz_system_admin_role
type AdminRole struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
TenantID uint64 `orm:"column(tenant_id);default(0)" json:"tenant_id"` // 租户ID:0=平台/全局,>0=具体租户(仅 cid=2 租户角色使用)
Cid uint8 `orm:"column(cid);default(1)" json:"cid"` // 1平台角色 2租户角色
IsCustom uint8 `orm:"column(is_custom);default(0)" json:"is_custom"` // 是否租户自定义角色:0=系统/平台预置 1=租户在租户端自建(数据按租户隔离)
Name string `orm:"column(name);size(32)" json:"name"`
Status uint8 `orm:"column(status);default(1)" json:"status"`
Rights *string `orm:"column(rights);type(text);null" json:"rights"`
CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"`
UpdateTime *time.Time `orm:"column(update_time);type(datetime);auto_now;null" json:"update_time"`
DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"`
}
func (m *AdminRole) TableName() string {
return "yz_system_admin_role"
}
package models
import "time"
// AdminRole 平台角色表 yz_system_admin_role
type AdminRole struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
TenantID uint64 `orm:"column(tenant_id);default(0)" json:"tenant_id"` // 租户ID:0=平台/全局,>0=具体租户(仅 cid=2 租户角色使用)
Cid uint8 `orm:"column(cid);default(1)" json:"cid"` // 1平台角色 2租户角色
IsCustom uint8 `orm:"column(is_custom);default(0)" json:"is_custom"` // 是否租户自定义角色:0=系统/平台预置 1=租户在租户端自建(数据按租户隔离)
IsLocked uint8 `orm:"column(is_locked);default(0)" json:"is_locked"` // 1=平台下发,租户端只读(不可改名/改权限/删除)
SourceRoleID uint64 `orm:"column(source_role_id);default(0)" json:"source_role_id"` // 来源角色ID(平台下发时记录,0=非下发)
Name string `orm:"column(name);size(32)" json:"name"`
Status uint8 `orm:"column(status);default(1)" json:"status"`
Rights *string `orm:"column(rights);type(text);null" json:"rights"`
CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"`
UpdateTime *time.Time `orm:"column(update_time);type(datetime);auto_now;null" json:"update_time"`
DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"`
}
func (m *AdminRole) TableName() string {
return "yz_system_admin_role"
}
+365
View File
@@ -0,0 +1,365 @@
package models
import "time"
// ERP 进销存交易层模型,对应 docs/sql/erp_inventory_schema.sql。
//
// 核心约定:
// - 库存结存 yz_backend_erp_stock 只允许由库存流水(yz_backend_erp_stock_ledger)
// 驱动变更,任何业务代码不得直接改 quantity/cost_price;
// - 十类业务单据统一存 yz_backend_erp_document(+_item),用 doc_type 区分;
// - tenant_id 为字符串(与 ERP/CRM 家族表一致),便于与客户/供应商表 JOIN。
// 单据类型
const (
ErpDocPurchaseOrder = "purchase_order" // 采购订单
ErpDocPurchaseIn = "purchase_in" // 采购入库
ErpDocPurchaseReturn = "purchase_return" // 采购退货
ErpDocSalesOrder = "sales_order" // 销售订单
ErpDocSalesOut = "sales_out" // 销售出库
ErpDocSalesReturn = "sales_return" // 销售退货
ErpDocOtherIn = "other_in" // 其他入库
ErpDocOtherOut = "other_out" // 其他出库
ErpDocTransfer = "transfer" // 库存调拨
ErpDocStockTake = "stock_take" // 库存盘点
)
// 单据状态
const (
ErpDocStatusDraft int8 = 0 // 草稿
ErpDocStatusPending int8 = 1 // 审批中
ErpDocStatusApproved int8 = 2 // 已生效
ErpDocStatusRejected int8 = 3 // 已驳回
ErpDocStatusCancelled int8 = 4 // 已作废
)
// 往来账类型
const (
ErpBillReceivable int8 = 1 // 应收
ErpBillPayable int8 = 2 // 应付
)
// 收付款类型
const (
ErpFundReceive int8 = 1 // 收款
ErpFundPay int8 = 2 // 付款
ErpFundOtherIn int8 = 3 // 其他收入
ErpFundExpense int8 = 4 // 费用支出
)
// 流水方向
const (
ErpStockIn int8 = 1
ErpStockOut int8 = -1
)
// ErpProductCategory 商品分类: yz_backend_erp_product_category
type ErpProductCategory struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
TenantID string `orm:"column(tenant_id);size(64)" json:"tenant_id"`
CategoryName string `orm:"column(category_name);size(100)" json:"category_name"`
ParentID uint64 `orm:"column(parent_id);default(0)" json:"parent_id"`
SortOrder int `orm:"column(sort_order);default(0)" json:"sort_order"`
Status int8 `orm:"column(status);default(1)" json:"status"`
Remark string `orm:"column(remark);size(500)" json:"remark"`
CreateTime time.Time `orm:"column(create_time);auto_now_add;type(datetime)" json:"create_time"`
UpdateTime time.Time `orm:"column(update_time);type(datetime);null;auto_now" json:"update_time"`
DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"`
}
func (m *ErpProductCategory) TableName() string { return "yz_backend_erp_product_category" }
// ErpProduct 商品档案: yz_backend_erp_product
type ErpProduct struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
TenantID string `orm:"column(tenant_id);size(64)" json:"tenant_id"`
ProductCode string `orm:"column(product_code);size(64)" json:"product_code"`
ProductName string `orm:"column(product_name);size(200)" json:"product_name"`
CategoryID uint64 `orm:"column(category_id);default(0)" json:"category_id"`
Brand string `orm:"column(brand);size(100)" json:"brand"`
Spec string `orm:"column(spec);size(200)" json:"spec"`
Model string `orm:"column(model);size(100)" json:"model"`
BaseUnit string `orm:"column(base_unit);size(32)" json:"base_unit"`
AuxUnit string `orm:"column(aux_unit);size(32)" json:"aux_unit"`
AuxRatio float64 `orm:"column(aux_ratio);type(decimal);digits(18);decimals(4);default(1)" json:"aux_ratio"`
Barcode string `orm:"column(barcode);size(64)" json:"barcode"`
ExtraBarcodes string `orm:"column(extra_barcodes);size(500)" json:"extra_barcodes"`
PurchasePrice float64 `orm:"column(purchase_price);type(decimal);digits(18);decimals(4)" json:"purchase_price"`
SalePrice float64 `orm:"column(sale_price);type(decimal);digits(18);decimals(4)" json:"sale_price"`
WholesalePrice float64 `orm:"column(wholesale_price);type(decimal);digits(18);decimals(4)" json:"wholesale_price"`
MemberPrice float64 `orm:"column(member_price);type(decimal);digits(18);decimals(4)" json:"member_price"`
MinPrice float64 `orm:"column(min_price);type(decimal);digits(18);decimals(4)" json:"min_price"`
TaxRate float64 `orm:"column(tax_rate);type(decimal);digits(9);decimals(4)" json:"tax_rate"`
SafetyQty float64 `orm:"column(safety_qty);type(decimal);digits(18);decimals(4)" json:"safety_qty"`
MaxQty float64 `orm:"column(max_qty);type(decimal);digits(18);decimals(4)" json:"max_qty"`
ShelfLifeDays int `orm:"column(shelf_life_days);default(0)" json:"shelf_life_days"`
EnableBatch int8 `orm:"column(enable_batch);default(0)" json:"enable_batch"`
ImageURL string `orm:"column(image_url);size(500)" json:"image_url"`
Status int8 `orm:"column(status);default(1)" json:"status"`
IsDraft int8 `orm:"column(is_draft);default(0)" json:"is_draft"`
Remark string `orm:"column(remark);type(text);null" json:"remark"`
CreateUserID string `orm:"column(create_user_id);size(64)" json:"create_user_id"`
CreateTime time.Time `orm:"column(create_time);auto_now_add;type(datetime)" json:"create_time"`
UpdateTime time.Time `orm:"column(update_time);type(datetime);null;auto_now" json:"update_time"`
DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"`
// 联查展示字段(非表列)
CategoryName string `orm:"-" json:"category_name"`
TotalStock float64 `orm:"-" json:"total_stock"`
SafetyState string `orm:"-" json:"safety_state"`
Stocks []map[string]interface{} `orm:"-" json:"stocks"`
}
func (m *ErpProduct) TableName() string { return "yz_backend_erp_product" }
// ErpWarehouse 仓库: yz_backend_erp_warehouse
type ErpWarehouse struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
TenantID string `orm:"column(tenant_id);size(64)" json:"tenant_id"`
WarehouseCode string `orm:"column(warehouse_code);size(64)" json:"warehouse_code"`
WarehouseName string `orm:"column(warehouse_name);size(100)" json:"warehouse_name"`
Address string `orm:"column(address);size(255)" json:"address"`
Manager string `orm:"column(manager);size(50)" json:"manager"`
Phone string `orm:"column(phone);size(20)" json:"phone"`
IsDefault int8 `orm:"column(is_default);default(0)" json:"is_default"`
Status int8 `orm:"column(status);default(1)" json:"status"`
Remark string `orm:"column(remark);size(500)" json:"remark"`
CreateTime time.Time `orm:"column(create_time);auto_now_add;type(datetime)" json:"create_time"`
UpdateTime time.Time `orm:"column(update_time);type(datetime);null;auto_now" json:"update_time"`
DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"`
}
func (m *ErpWarehouse) TableName() string { return "yz_backend_erp_warehouse" }
// ErpStock 库存结存: yz_backend_erp_stock。唯一键 (tenant, product, warehouse, batch)。
type ErpStock struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
TenantID string `orm:"column(tenant_id);size(64)" json:"tenant_id"`
ProductID uint64 `orm:"column(product_id)" json:"product_id"`
WarehouseID uint64 `orm:"column(warehouse_id)" json:"warehouse_id"`
BatchNo string `orm:"column(batch_no);size(64)" json:"batch_no"`
Quantity float64 `orm:"column(quantity);type(decimal);digits(18);decimals(4)" json:"quantity"`
CostPrice float64 `orm:"column(cost_price);type(decimal);digits(18);decimals(6)" json:"cost_price"`
UpdateTime time.Time `orm:"column(update_time);type(datetime);null;auto_now" json:"update_time"`
// 联查展示字段(非表列)
ProductName string `orm:"-" json:"product_name"`
ProductCode string `orm:"-" json:"product_code"`
Spec string `orm:"-" json:"spec"`
BaseUnit string `orm:"-" json:"base_unit"`
WarehouseName string `orm:"-" json:"warehouse_name"`
SafetyQty float64 `orm:"-" json:"safety_qty"`
MaxQty float64 `orm:"-" json:"max_qty"`
PurchasePrice float64 `orm:"-" json:"purchase_price"`
}
func (m *ErpStock) TableName() string { return "yz_backend_erp_stock" }
// ErpStockLedger 库存流水(只增不改不删): yz_backend_erp_stock_ledger
type ErpStockLedger struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
TenantID string `orm:"column(tenant_id);size(64)" json:"tenant_id"`
ProductID uint64 `orm:"column(product_id)" json:"product_id"`
WarehouseID uint64 `orm:"column(warehouse_id)" json:"warehouse_id"`
BatchNo string `orm:"column(batch_no);size(64)" json:"batch_no"`
Direction int8 `orm:"column(direction);default(1)" json:"direction"`
Quantity float64 `orm:"column(quantity);type(decimal);digits(18);decimals(4)" json:"quantity"`
BeforeQty float64 `orm:"column(before_qty);type(decimal);digits(18);decimals(4)" json:"before_qty"`
AfterQty float64 `orm:"column(after_qty);type(decimal);digits(18);decimals(4)" json:"after_qty"`
UnitCost float64 `orm:"column(unit_cost);type(decimal);digits(18);decimals(6)" json:"unit_cost"`
TotalCost float64 `orm:"column(total_cost);type(decimal);digits(18);decimals(2)" json:"total_cost"`
DocType string `orm:"column(doc_type);size(30)" json:"doc_type"`
DocID uint64 `orm:"column(doc_id)" json:"doc_id"`
DocNo string `orm:"column(doc_no);size(64)" json:"doc_no"`
DocItemID uint64 `orm:"column(doc_item_id)" json:"doc_item_id"`
ProductionDate *time.Time `orm:"column(production_date);type(date);null" json:"production_date"`
ExpireDate *time.Time `orm:"column(expire_date);type(date);null" json:"expire_date"`
OperatorID string `orm:"column(operator_id);size(64)" json:"operator_id"`
OperatorName string `orm:"column(operator_name);size(64)" json:"operator_name"`
Remark string `orm:"column(remark);size(500)" json:"remark"`
CreateTime time.Time `orm:"column(create_time);auto_now_add;type(datetime)" json:"create_time"`
ProductName string `orm:"-" json:"product_name"`
ProductCode string `orm:"-" json:"product_code"`
Spec string `orm:"-" json:"spec"`
BaseUnit string `orm:"-" json:"base_unit"`
WarehouseName string `orm:"-" json:"warehouse_name"`
}
func (m *ErpStockLedger) TableName() string { return "yz_backend_erp_stock_ledger" }
// ErpDocument 业务单据主表: yz_backend_erp_document
type ErpDocument struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
TenantID string `orm:"column(tenant_id);size(64)" json:"tenant_id"`
DocNo string `orm:"column(doc_no);size(64)" json:"doc_no"`
DocType string `orm:"column(doc_type);size(30)" json:"doc_type"`
BizDate time.Time `orm:"column(biz_date);type(date)" json:"biz_date"`
WarehouseID uint64 `orm:"column(warehouse_id);default(0)" json:"warehouse_id"`
ToWarehouseID uint64 `orm:"column(to_warehouse_id);default(0)" json:"to_warehouse_id"`
PartnerType string `orm:"column(partner_type);size(20)" json:"partner_type"`
PartnerID uint64 `orm:"column(partner_id);default(0)" json:"partner_id"`
PartnerName string `orm:"column(partner_name);size(200)" json:"partner_name"`
SourceDocID uint64 `orm:"column(source_doc_id);default(0)" json:"source_doc_id"`
TotalQty float64 `orm:"column(total_qty);type(decimal);digits(18);decimals(4)" json:"total_qty"`
TotalAmount float64 `orm:"column(total_amount);type(decimal);digits(18);decimals(2)" json:"total_amount"`
DiscountAmount float64 `orm:"column(discount_amount);type(decimal);digits(18);decimals(2)" json:"discount_amount"`
ActualAmount float64 `orm:"column(actual_amount);type(decimal);digits(18);decimals(2)" json:"actual_amount"`
Status int8 `orm:"column(status);default(0)" json:"status"`
InstanceID uint64 `orm:"column(instance_id);default(0)" json:"instance_id"`
AuditorID string `orm:"column(auditor_id);size(64)" json:"auditor_id"`
AuditorName string `orm:"column(auditor_name);size(64)" json:"auditor_name"`
AuditTime *time.Time `orm:"column(audit_time);type(datetime);null" json:"audit_time"`
Remark string `orm:"column(remark);type(text);null" json:"remark"`
CreateUserID string `orm:"column(create_user_id);size(64)" json:"create_user_id"`
CreateUserName string `orm:"column(create_user_name);size(64)" json:"create_user_name"`
CreateTime time.Time `orm:"column(create_time);auto_now_add;type(datetime)" json:"create_time"`
UpdateTime time.Time `orm:"column(update_time);type(datetime);null;auto_now" json:"update_time"`
DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"`
Items []ErpDocumentItem `orm:"-" json:"items,omitempty"`
WarehouseName string `orm:"-" json:"warehouse_name"`
ToWarehouseName string `orm:"-" json:"to_warehouse_name"`
SourceDocNo string `orm:"-" json:"source_doc_no"`
DocTypeLabel string `orm:"-" json:"doc_type_label"`
StatusLabel string `orm:"-" json:"status_label"`
Instance map[string]interface{} `orm:"-" json:"instance,omitempty"`
}
func (m *ErpDocument) TableName() string { return "yz_backend_erp_document" }
// ErpDocumentItem 业务单据明细: yz_backend_erp_document_item
type ErpDocumentItem struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
DocID uint64 `orm:"column(doc_id)" json:"doc_id"`
TenantID string `orm:"column(tenant_id);size(64)" json:"tenant_id"`
ProductID uint64 `orm:"column(product_id)" json:"product_id"`
ProductName string `orm:"column(product_name);size(200)" json:"product_name"`
Spec string `orm:"column(spec);size(200)" json:"spec"`
Unit string `orm:"column(unit);size(32)" json:"unit"`
WarehouseID uint64 `orm:"column(warehouse_id);default(0)" json:"warehouse_id"`
BatchNo string `orm:"column(batch_no);size(64)" json:"batch_no"`
Quantity float64 `orm:"column(quantity);type(decimal);digits(18);decimals(4)" json:"quantity"`
BookQty float64 `orm:"column(book_qty);type(decimal);digits(18);decimals(4)" json:"book_qty"`
ExecutedQty float64 `orm:"column(executed_qty);type(decimal);digits(18);decimals(4)" json:"executed_qty"`
RefItemID uint64 `orm:"column(ref_item_id);default(0)" json:"ref_item_id"`
UnitPrice float64 `orm:"column(unit_price);type(decimal);digits(18);decimals(6)" json:"unit_price"`
Amount float64 `orm:"column(amount);type(decimal);digits(18);decimals(2)" json:"amount"`
ProductionDate *time.Time `orm:"column(production_date);type(date);null" json:"production_date"`
ExpireDate *time.Time `orm:"column(expire_date);type(date);null" json:"expire_date"`
Remark string `orm:"column(remark);size(500)" json:"remark"`
SortOrder int `orm:"column(sort_order);default(0)" json:"sort_order"`
ProductCode string `orm:"-" json:"product_code"`
BaseUnit string `orm:"-" json:"base_unit"`
StockQty float64 `orm:"-" json:"stock_qty"` // 当前可用库存(开单时展示)
}
func (m *ErpDocumentItem) TableName() string { return "yz_backend_erp_document_item" }
// ErpPartnerBill 往来账(应收/应付): yz_backend_erp_partner_bill
type ErpPartnerBill struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
TenantID string `orm:"column(tenant_id);size(64)" json:"tenant_id"`
BillType int8 `orm:"column(bill_type);default(1)" json:"bill_type"`
PartnerType string `orm:"column(partner_type);size(20)" json:"partner_type"`
PartnerID uint64 `orm:"column(partner_id)" json:"partner_id"`
PartnerName string `orm:"column(partner_name);size(200)" json:"partner_name"`
SourceDocID uint64 `orm:"column(source_doc_id)" json:"source_doc_id"`
SourceDocNo string `orm:"column(source_doc_no);size(64)" json:"source_doc_no"`
BillDate time.Time `orm:"column(bill_date);type(date)" json:"bill_date"`
DueDate *time.Time `orm:"column(due_date);type(date);null" json:"due_date"`
Amount float64 `orm:"column(amount);type(decimal);digits(18);decimals(2)" json:"amount"`
SettledAmount float64 `orm:"column(settled_amount);type(decimal);digits(18);decimals(2)" json:"settled_amount"`
Status int8 `orm:"column(status);default(0)" json:"status"`
Remark string `orm:"column(remark);size(500)" json:"remark"`
CreateTime time.Time `orm:"column(create_time);auto_now_add;type(datetime)" json:"create_time"`
UpdateTime time.Time `orm:"column(update_time);type(datetime);null;auto_now" json:"update_time"`
}
func (m *ErpPartnerBill) TableName() string { return "yz_backend_erp_partner_bill" }
// ErpFundBill 收付款单: yz_backend_erp_fund_bill
type ErpFundBill struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
TenantID string `orm:"column(tenant_id);size(64)" json:"tenant_id"`
FundNo string `orm:"column(fund_no);size(64)" json:"fund_no"`
FundType int8 `orm:"column(fund_type);default(1)" json:"fund_type"`
PartnerType string `orm:"column(partner_type);size(20)" json:"partner_type"`
PartnerID uint64 `orm:"column(partner_id);default(0)" json:"partner_id"`
PartnerName string `orm:"column(partner_name);size(200)" json:"partner_name"`
Amount float64 `orm:"column(amount);type(decimal);digits(18);decimals(2)" json:"amount"`
SettledAmount float64 `orm:"column(settled_amount);type(decimal);digits(18);decimals(2)" json:"settled_amount"`
PayMethod string `orm:"column(pay_method);size(30);default(cash)" json:"pay_method"`
PayAccount string `orm:"column(pay_account);size(100)" json:"pay_account"`
BizDate time.Time `orm:"column(biz_date);type(date)" json:"biz_date"`
Status int8 `orm:"column(status);default(0)" json:"status"`
Remark string `orm:"column(remark);size(500)" json:"remark"`
CreateUserID string `orm:"column(create_user_id);size(64)" json:"create_user_id"`
CreateUserName string `orm:"column(create_user_name);size(64)" json:"create_user_name"`
CreateTime time.Time `orm:"column(create_time);auto_now_add;type(datetime)" json:"create_time"`
UpdateTime time.Time `orm:"column(update_time);type(datetime);null;auto_now" json:"update_time"`
DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"`
Settles []ErpFundSettle `orm:"-" json:"settles,omitempty"`
}
func (m *ErpFundBill) TableName() string { return "yz_backend_erp_fund_bill" }
// ErpFundSettle 收付款核销明细: yz_backend_erp_fund_settle
type ErpFundSettle struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
TenantID string `orm:"column(tenant_id);size(64)" json:"tenant_id"`
FundBillID uint64 `orm:"column(fund_bill_id)" json:"fund_bill_id"`
PartnerBillID uint64 `orm:"column(partner_bill_id)" json:"partner_bill_id"`
PartnerBillNo string `orm:"column(partner_bill_no);size(64)" json:"partner_bill_no"`
Amount float64 `orm:"column(amount);type(decimal);digits(18);decimals(2)" json:"amount"`
CreateTime time.Time `orm:"column(create_time);auto_now_add;type(datetime)" json:"create_time"`
}
func (m *ErpFundSettle) TableName() string { return "yz_backend_erp_fund_settle" }
// ErpDocTypeLabel 单据类型中文名(后端返回给两端的统一口径)
var ErpDocTypeLabel = map[string]string{
ErpDocPurchaseOrder: "采购订单",
ErpDocPurchaseIn: "采购入库",
ErpDocPurchaseReturn: "采购退货",
ErpDocSalesOrder: "销售订单",
ErpDocSalesOut: "销售出库",
ErpDocSalesReturn: "销售退货",
ErpDocOtherIn: "其他入库",
ErpDocOtherOut: "其他出库",
ErpDocTransfer: "库存调拨",
ErpDocStockTake: "库存盘点",
}
// ErpDocAffectsStock 单据生效是否产生库存流水
func ErpDocAffectsStock(docType string) bool {
switch docType {
case ErpDocPurchaseOrder, ErpDocSalesOrder:
return false
default:
return true
}
}
// ErpDocStatusLabel 单据状态中文名
func ErpDocStatusLabel(status int8) string {
switch status {
case ErpDocStatusPending:
return "审批中"
case ErpDocStatusApproved:
return "已生效"
case ErpDocStatusRejected:
return "已驳回"
case ErpDocStatusCancelled:
return "已作废"
default:
return "草稿"
}
}
// ErpDocBizTypePrefix 单据类型对应审批流 biz_type(与 approval.go 常量一致)
func ErpDocApprovalBizType(docType string) string {
return "erp_" + docType
}
+11
View File
@@ -131,6 +131,17 @@ func Init(_ string) {
new(ErpAccountSet),
new(ErpNormalSetting),
new(ErpCompanyContact),
// 进销存交易层(docs/sql/erp_inventory_schema.sql)
new(ErpProductCategory),
new(ErpProduct),
new(ErpWarehouse),
new(ErpStock),
new(ErpStockLedger),
new(ErpDocument),
new(ErpDocumentItem),
new(ErpPartnerBill),
new(ErpFundBill),
new(ErpFundSettle),
new(BackendAiProvider),
new(BackendAiChatSession),
new(BackendAiChatMessage),
+2
View File
@@ -40,6 +40,8 @@ type TenantCrmCustomer struct {
PoolInTime *time.Time `orm:"column(pool_in_time);type(datetime);null" json:"pool_in_time"` // 进入公海时间
PoolReason string `orm:"column(pool_reason);size(200);null" json:"pool_reason"` // 移入公海原因
CreateUserID string `orm:"column(create_user_id);size(64);null" json:"create_user_id"` // 创建人用户ID,用于删除权限校验
CreditLimit float64 `orm:"column(credit_limit);type(decimal);digits(18);decimals(2);default(0)" json:"credit_limit"` // 信用额度,0=不限
PaymentDays int `orm:"column(payment_days);default(0)" json:"payment_days"` // 账期天数
CreateTime time.Time `orm:"column(create_time);auto_now_add;type(datetime)" json:"create_time"`
UpdateTime time.Time `orm:"column(update_time);auto_now;type(datetime)" json:"update_time"`
DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"`
+1
View File
@@ -33,6 +33,7 @@ type TenantCrmSupplier struct {
RegisteredAddress string `orm:"column(registered_address);size(255)" json:"registered_address"`
RegisteredPhone string `orm:"column(registered_phone);size(50)" json:"registered_phone"`
CreateUserID string `orm:"column(create_user_id);size(64);null" json:"create_user_id"` // 创建人用户ID,用于删除权限校验
PaymentDays int `orm:"column(payment_days);default(0)" json:"payment_days"` // 账期天数
CreateTime time.Time `orm:"column(create_time);auto_now_add;type(datetime)" json:"create_time"`
UpdateTime time.Time `orm:"column(update_time);auto_now;type(datetime)" json:"update_time"`
DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"`