Files
service/erp/payable.go
kanade 165109e9fd feat(erp): 添加应付账款确认功能
- 实现 Confirm 方法用于确认应付账款
- 使用 RPC 客户端调用远程 Confirm 接口
- 返回确认操作的结果状态
2025-12-09 13:27:32 +08:00

116 lines
4.0 KiB
Go

package erp
import (
"context"
"time"
"git.kumo.work/shama/service/client"
"git.kumo.work/shama/service/lib/bean"
"github.com/shopspring/decimal"
)
type payable struct {
}
type ArgsPayableList struct {
Page bean.Page
Search PayableSearch
}
type PayableSearch struct {
PayableSerial string // 付款单据号
FactoryId int64 // 工厂id
AccountingSerial string // 做账单号
CreatedAtStart *time.Time // 创建开始时间
CreatedAtEnd *time.Time // 创建结束时间
IsConfirm int64 // 是否确认
}
type ReplyPayableList struct {
List []PayableItem `json:"list"`
Total int64 `json:"total"`
}
type PayableItem struct {
Id int64 `json:"id"`
PayableSerial string `json:"payableSerial"`
FactoryName string `json:"factoryName"`
AccountingSerial string `json:"accountingSerial"`
Amount decimal.Decimal `json:"amount"`
Currency string `json:"currency"`
CurrencyName string `json:"currencyName"`
CurrencyRate decimal.Decimal `json:"currencyRate"`
CurrencySymbol string `json:"currencySymbol"`
IsConfirm int64 `json:"isConfirm"`
PurchaseStaffId int64 `json:"purchaseStaffId"`
CreatedAt *time.Time `json:"createdAt"`
UpdatedAt *time.Time `json:"updatedAt"`
}
// List @TITLE 列表
func (p *payable) List(ctx context.Context, args ArgsPayableList) (reply ReplyPayableList, err error) {
xClient, err := client.GetClient(p)
if err != nil {
return
}
err = xClient.Call(ctx, "List", args, &reply)
return
}
type ReplyPayableInfo struct {
Id int64 `json:"id"`
PayableSerial string `json:"payableSerial"`
AccountingSerial string `json:"accountingSerial"`
FactoryName string `json:"factoryName"`
FactoryBank string `json:"factoryBank"`
FactoryBankAccount string `json:"factoryBankAccount"`
Amount decimal.Decimal `json:"amount"`
Currency string `json:"currency"`
CurrencyName string `json:"currencyName"`
CurrencyRate decimal.Decimal `json:"currencyRate"`
CurrencySymbol string `json:"currencySymbol"`
PurchaseStaffId int64 `json:"purchaseStaffId"`
IsConfirm int64 `json:"isConfirm"`
CreatedAt *time.Time `json:"createdAt"`
UpdatedAt *time.Time `json:"updatedAt"`
Products []PayableProductItem `json:"products"`
Costs []PayableCostItem `json:"costs"`
}
type PayableProductItem struct {
Id int64 `json:"id"`
AccountingProductId int64 `json:"accountingProductId"`
Name string `json:"name"`
Serial string `json:"serial"`
PayableCount int64 `json:"payableCount"`
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"`
}
type PayableCostItem struct {
Id int64 `json:"id"`
Name string `json:"name"`
Amount decimal.Decimal `json:"amount"`
Remarks string `json:"remarks"`
}
// Info @TITLE 详情
func (p *payable) Info(ctx context.Context, payableId int64) (reply ReplyPayableInfo, err error) {
xClient, err := client.GetClient(p)
if err != nil {
return
}
err = xClient.Call(ctx, "List", payableId, &reply)
return
}
// Confirm @TITLE 确认
func (p *payable) Confirm(ctx context.Context, payableId int64) (err error) {
xClient, err := client.GetClient(p)
if err != nil {
return
}
reply := 0
return xClient.Call(ctx, "Confirm", payableId, &reply)
}