116 lines
4.0 KiB
Go
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)
|
|
}
|