feat(accounting): 添加做账合同追加费用功能
- 新增 append 模块处理追加费用相关逻辑 - 在 accounting 结构体中添加 Append 字段支持追加操作 - 添加 ArgsAuditAppendCost 和 ArgsAppendAddCost 等参数结构体 - 实现 AppendCost 方法用于追加费用审核流程 - 新增 PurchaseCostItem 结构体并实现 Purchase 方法获取采购合同费用 - 在 constant.go 中添加 BusinessTypeAccountingAppendCostAudit 业务类型常量 - 移除 sale/benefit.go 中的 OtherCost 字段优化成本结构 - 添加 payable.Gen 方法用于生成应付单 - 添加 receivable.Gen 方法用于生成应收单
This commit is contained in:
@@ -6,4 +6,5 @@ type Accounting struct {
|
|||||||
Product product
|
Product product
|
||||||
Remark remark
|
Remark remark
|
||||||
Old old
|
Old old
|
||||||
|
Append append
|
||||||
}
|
}
|
||||||
|
|||||||
47
erp/accounting/append.go
Normal file
47
erp/accounting/append.go
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
package accounting
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"git.kumo.work/shama/service/client"
|
||||||
|
"github.com/shopspring/decimal"
|
||||||
|
)
|
||||||
|
|
||||||
|
type append struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
type ReplyCostInfo struct {
|
||||||
|
AccountingId int64 `json:"accountingId"`
|
||||||
|
FactoryId int64 `json:"factoryId"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Amount decimal.Decimal `json:"amount"`
|
||||||
|
Remarks string `json:"remarks"`
|
||||||
|
WorkflowId int64 `json:"workflowId"`
|
||||||
|
WorkflowStatus int64 `json:"workflowStatus"`
|
||||||
|
WorkflowReason string `json:"workflowReason"`
|
||||||
|
CreatedAt *time.Time `json:"createdAt"`
|
||||||
|
UpdatedAt *time.Time `json:"updatedAt"`
|
||||||
|
Products []CostInfoProductItem `json:"products"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type CostInfoProductItem struct {
|
||||||
|
AccountingProductId int64 `json:"accountingProductId"`
|
||||||
|
BeforeAmount decimal.Decimal `json:"beforeAmount"`
|
||||||
|
Amount decimal.Decimal `json:"amount"`
|
||||||
|
AfterAmount decimal.Decimal `json:"afterAmount"`
|
||||||
|
Serial string `json:"serial"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
BlEngName string `json:"blEngName"`
|
||||||
|
CustomsName string `json:"customsName"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CostInfo @TITLE 费用详情
|
||||||
|
func (a *append) CostInfo(ctx context.Context, workflowId int64) (reply ReplyCostInfo, err error) {
|
||||||
|
xClient, err := client.GetClient(a)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = xClient.Call(ctx, "CostInfo", workflowId, &reply)
|
||||||
|
return
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
|
|
||||||
"git.kumo.work/shama/service/client"
|
"git.kumo.work/shama/service/client"
|
||||||
"git.kumo.work/shama/service/erp/bean"
|
"git.kumo.work/shama/service/erp/bean"
|
||||||
|
"github.com/shopspring/decimal"
|
||||||
)
|
)
|
||||||
|
|
||||||
type audit struct {
|
type audit struct {
|
||||||
@@ -25,3 +26,35 @@ func (a *audit) Submit(ctx context.Context, args ArgsAuditSubmit) (err error) {
|
|||||||
err = xClient.Call(ctx, "Submit", args, &reply)
|
err = xClient.Call(ctx, "Submit", args, &reply)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ArgsAuditAppendCost struct {
|
||||||
|
StaffId int64 // 操作人
|
||||||
|
AccountingId int64 // 做账合同id
|
||||||
|
AuditItems []bean.AuditItem // 审核
|
||||||
|
AppendCost ArgsAppendAddCost // 追加费用
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArgsAppendAddCost struct {
|
||||||
|
Products []AppendAddCostProduct
|
||||||
|
FactoryId int64 // 工厂id
|
||||||
|
Name string // 费用名
|
||||||
|
Amount decimal.Decimal // 金额
|
||||||
|
Remarks string // 备注信息
|
||||||
|
}
|
||||||
|
|
||||||
|
type AppendAddCostProduct struct {
|
||||||
|
AccountingProductId int64 // 做账产品id
|
||||||
|
BeforeAmount decimal.Decimal // 改前金额
|
||||||
|
Amount decimal.Decimal // 调整金额
|
||||||
|
AfterAmount decimal.Decimal // 改后金额
|
||||||
|
}
|
||||||
|
|
||||||
|
// AppendCost @TITLE 追加费用
|
||||||
|
func (a *audit) AppendCost(ctx context.Context, args ArgsAuditAppendCost) (workflowId int64, err error) {
|
||||||
|
xClient, err := client.GetClient(a)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = xClient.Call(ctx, "AppendCost", args, &workflowId)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,9 +2,10 @@ package accounting
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
"git.kumo.work/shama/service/client"
|
"git.kumo.work/shama/service/client"
|
||||||
"github.com/shopspring/decimal"
|
"github.com/shopspring/decimal"
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type cost struct {
|
type cost struct {
|
||||||
@@ -32,6 +33,30 @@ func (c *cost) All(ctx context.Context, accountingId int64) (reply []CostItem, e
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PurchaseCostItem struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
FactoryId int64 `json:"factoryId"`
|
||||||
|
FactoryName string `json:"factoryName"`
|
||||||
|
PiSerial string `json:"piSerial"`
|
||||||
|
PoSerial string `json:"poSerial"`
|
||||||
|
BatchNo int64 `json:"batchNo"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Amount decimal.Decimal `json:"amount"`
|
||||||
|
Remarks string `json:"remarks"`
|
||||||
|
CreatedAt *time.Time `json:"createdAt"`
|
||||||
|
UpdatedAt *time.Time `json:"updatedAt"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Purchase @TITLE 采购合同费用
|
||||||
|
func (c *cost) Purchase(ctx context.Context, accountingId int64) (reply []PurchaseCostItem, err error) {
|
||||||
|
xClient, err := client.GetClient(c)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = xClient.Call(ctx, "Purchase", accountingId, &reply)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
type ArgsCostAdd struct {
|
type ArgsCostAdd struct {
|
||||||
AccountingId int64 // 做账合同ID
|
AccountingId int64 // 做账合同ID
|
||||||
CostAdd
|
CostAdd
|
||||||
|
|||||||
@@ -2,19 +2,20 @@ package erp
|
|||||||
|
|
||||||
type BusinessType = string // 业务类型
|
type BusinessType = string // 业务类型
|
||||||
const (
|
const (
|
||||||
BusinessTypeSaleAudit BusinessType = "saleAudit" // 销售合同审核
|
BusinessTypeSaleAudit BusinessType = "saleAudit" // 销售合同审核
|
||||||
BusinessTypeSaleAuditClose BusinessType = "saleAuditClose" // 销售合同关单审核
|
BusinessTypeSaleAuditClose BusinessType = "saleAuditClose" // 销售合同关单审核
|
||||||
BusinessTypeSaleAppendAudit BusinessType = "saleAuditAppend" // 销售合同追加商品
|
BusinessTypeSaleAppendAudit BusinessType = "saleAuditAppend" // 销售合同追加商品
|
||||||
BusinessTypeSaleChangeAudit BusinessType = "saleAuditChange" // 销售合同修改产品
|
BusinessTypeSaleChangeAudit BusinessType = "saleAuditChange" // 销售合同修改产品
|
||||||
BusinessTypeSaleBenefitAudit BusinessType = "saleAuditBenefit" // 销售合同修改效益测算
|
BusinessTypeSaleBenefitAudit BusinessType = "saleAuditBenefit" // 销售合同修改效益测算
|
||||||
BusinessTypePurchaseAudit BusinessType = "purchaseAudit" // 采购合同审核
|
BusinessTypePurchaseAudit BusinessType = "purchaseAudit" // 采购合同审核
|
||||||
BusinessTypeShipmentAudit BusinessType = "shipmentAudit" // 订舱单审核
|
BusinessTypeShipmentAudit BusinessType = "shipmentAudit" // 订舱单审核
|
||||||
BusinessTypeShipmentModifyAudit BusinessType = "shipmentModifyAudit" // 订舱单修改单审核
|
BusinessTypeShipmentModifyAudit BusinessType = "shipmentModifyAudit" // 订舱单修改单审核
|
||||||
BusinessTypeAccountingAudit BusinessType = "accountingAudit" // 做账合同审核
|
BusinessTypeAccountingAudit BusinessType = "accountingAudit" // 做账合同审核
|
||||||
BusinessTypeAccountingAuditV2 BusinessType = "accountingAuditV2" // 做账合同审核
|
BusinessTypeAccountingAuditV2 BusinessType = "accountingAuditV2" // 做账合同审核
|
||||||
BusinessTypeExpense BusinessType = "expenseAudit" // 报销单
|
BusinessTypeAccountingAppendCostAudit BusinessType = "accountingAppendCostAudit" // 做账合同追加费用审核
|
||||||
BusinessTypeRequest BusinessType = "requestAudit" // 申请单
|
BusinessTypeExpense BusinessType = "expenseAudit" // 报销单
|
||||||
BusinessTypePayment BusinessType = "paymentAudit" // 申请单
|
BusinessTypeRequest BusinessType = "requestAudit" // 申请单
|
||||||
|
BusinessTypePayment BusinessType = "paymentAudit" // 申请单
|
||||||
)
|
)
|
||||||
|
|
||||||
var BusinessTypeName = map[BusinessType]string{
|
var BusinessTypeName = map[BusinessType]string{
|
||||||
|
|||||||
@@ -59,6 +59,16 @@ func (p *payable) List(ctx context.Context, args ArgsPayableList) (reply ReplyPa
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Gen @TITLE 生成应付单
|
||||||
|
func (p *payable) Gen(ctx context.Context, accountingId int64) (err error) {
|
||||||
|
xClient, err := client.GetClient(p)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
reply := 0
|
||||||
|
return xClient.Call(ctx, "Gen", accountingId, &reply)
|
||||||
|
}
|
||||||
|
|
||||||
type ReplyPayableInfo struct {
|
type ReplyPayableInfo struct {
|
||||||
Id int64 `json:"id"`
|
Id int64 `json:"id"`
|
||||||
PayableSerial string `json:"payableSerial"`
|
PayableSerial string `json:"payableSerial"`
|
||||||
|
|||||||
@@ -59,6 +59,16 @@ func (r *receivable) List(ctx context.Context, args ArgsReceivableList) (reply R
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Gen @TITLE 生成应收单
|
||||||
|
func (r *receivable) Gen(ctx context.Context, shipmentId int64) (err error) {
|
||||||
|
xClient, err := client.GetClient(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
reply := 0
|
||||||
|
return xClient.Call(ctx, "Gen", shipmentId, &reply)
|
||||||
|
}
|
||||||
|
|
||||||
type ReplyReceivableInfo struct {
|
type ReplyReceivableInfo struct {
|
||||||
Id int64 `json:"id"`
|
Id int64 `json:"id"`
|
||||||
ReceivableSerial string `json:"receivableSerial"`
|
ReceivableSerial string `json:"receivableSerial"`
|
||||||
|
|||||||
@@ -97,7 +97,6 @@ type ArgsBenefitEdit struct {
|
|||||||
SaleId int64 // 销售合同
|
SaleId int64 // 销售合同
|
||||||
DomesticShippingCost decimal.Decimal // 国内运杂费
|
DomesticShippingCost decimal.Decimal // 国内运杂费
|
||||||
DocumentCost decimal.Decimal // 单证费
|
DocumentCost decimal.Decimal // 单证费
|
||||||
OtherCost decimal.Decimal // 其他成本
|
|
||||||
TotalSaleAmount decimal.Decimal // 出口总价
|
TotalSaleAmount decimal.Decimal // 出口总价
|
||||||
ForeignShippingCost decimal.Decimal // 国外运杂费
|
ForeignShippingCost decimal.Decimal // 国外运杂费
|
||||||
BankFees decimal.Decimal // 银行手续费
|
BankFees decimal.Decimal // 银行手续费
|
||||||
|
|||||||
Reference in New Issue
Block a user