diff --git a/erp/receivable.go b/erp/receivable.go new file mode 100644 index 0000000..a76d429 --- /dev/null +++ b/erp/receivable.go @@ -0,0 +1,96 @@ +package erp + +import ( + "context" + "time" + + "git.kumo.work/shama/service/client" + "git.kumo.work/shama/service/lib/bean" + "github.com/shopspring/decimal" +) + +type receivable struct { +} +type ArgsReceivableList struct { + Page bean.Page + Search ReceivableSearch +} +type ReceivableSearch struct { + ReceivableSerial string // 收款单据号 + CustomId int64 // 客户id + InvoiceSerial string // 出运发票号 + CreatedAtStart *time.Time // 创建开始时间 + CreatedAtEnd *time.Time // 创建结束时间 +} +type ReplyReceivableList struct { + List []ReceivableItem `json:"list"` + Total int64 `json:"total"` +} +type ReceivableItem struct { + Id int64 `json:"id"` + ReceivableSerial string `json:"receivableSerial"` + CustomName string `json:"customName"` + InvoiceSerial string `json:"invoiceSerial"` + ReceivableAmount decimal.Decimal `json:"receivableAmount"` + ReceivedAmount decimal.Decimal `json:"receivedAmount"` + OutstandingAmount decimal.Decimal `json:"outstandingAmount"` + Currency string `json:"currency"` + CurrencyName string `json:"currencyName"` + CurrencyRate decimal.Decimal `json:"currencyRate"` + CurrencySymbol string `json:"currencySymbol"` + CreatedStaffID int64 `json:"createdStaffID"` + CreatedAt *time.Time `json:"createdAt"` + UpdatedAt *time.Time `json:"updatedAt"` +} + +// List @TITLE 列表 +func (p *receivable) List(ctx context.Context, args ArgsReceivableList) (reply ReplyReceivableList, err error) { + xClient, err := client.GetClient(p) + if err != nil { + return + } + err = xClient.Call(ctx, "List", args, &reply) + return +} + +type ReplyReceivableInfo struct { + Id int64 `json:"id"` + ReceivableSerial string `json:"receivableSerial"` + CustomName string `json:"customName"` + InvoiceSerial string `json:"invoiceSerial"` + ReceivableAmount decimal.Decimal `json:"receivableAmount"` + ReceivedAmount decimal.Decimal `json:"receivedAmount"` + OutstandingAmount decimal.Decimal `json:"outstandingAmount"` + Currency string `json:"currency"` + CurrencyName string `json:"currencyName"` + CurrencyRate decimal.Decimal `json:"currencyRate"` + CurrencySymbol string `json:"currencySymbol"` + CreatedStaffID int64 `json:"createdStaffID"` + CreatedAt *time.Time `json:"createdAt"` + UpdatedAt *time.Time `json:"updatedAt"` + Products []ReceivableProductItem `json:"products"` +} + +type ReceivableProductItem struct { + Id int64 `json:"id"` + ShipmentProductId int64 `json:"shipmentProductId"` + Name string `json:"name"` + Serial string `json:"serial"` + ReceivableCount int64 `json:"receivableCount"` + AddTaxRate decimal.Decimal `json:"addTaxRate"` + UnitPrice decimal.Decimal `json:"unitPrice"` + ExTaxUnitPrice decimal.Decimal `json:"exTaxUnitPrice"` + UnitAmount decimal.Decimal `json:"unitAmount"` + ExTaxUnitAmount decimal.Decimal `json:"exTaxUnitAmount"` + TaxAmount decimal.Decimal `json:"taxAmount"` +} + +// Info @TITLE 详情 +func (p *receivable) Info(ctx context.Context, receivableId int64) (reply ReplyReceivableInfo, err error) { + xClient, err := client.GetClient(p) + if err != nil { + return + } + err = xClient.Call(ctx, "List", receivableId, &reply) + return +}