From b0c346a83b2c310171f60b2d9830ab48520e555f Mon Sep 17 00:00:00 2001 From: kanade Date: Wed, 5 Mar 2025 14:14:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AE=A2=E8=88=B1=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- erp/constant.go | 26 +-- erp/shipment/modify.go | 262 +++++++++++++++++++++++++++++ erp/shipment/modify/audit.go | 25 +++ erp/shipment/modify/cost.go | 76 +++++++++ erp/shipment/modify/customsCost.go | 77 +++++++++ erp/shipment/modify/gift.go | 127 ++++++++++++++ erp/shipment/modify/modify.go | 10 ++ erp/shipment/modify/sale.go | 56 ++++++ erp/shipment/modify/saleProduct.go | 249 +++++++++++++++++++++++++++ erp/shipment/shipment.go | 1 + 10 files changed, 897 insertions(+), 12 deletions(-) create mode 100644 erp/shipment/modify.go create mode 100644 erp/shipment/modify/audit.go create mode 100644 erp/shipment/modify/cost.go create mode 100644 erp/shipment/modify/customsCost.go create mode 100644 erp/shipment/modify/gift.go create mode 100644 erp/shipment/modify/modify.go create mode 100644 erp/shipment/modify/sale.go create mode 100644 erp/shipment/modify/saleProduct.go diff --git a/erp/constant.go b/erp/constant.go index 5ebc063..e7e3bf3 100644 --- a/erp/constant.go +++ b/erp/constant.go @@ -2,21 +2,23 @@ package erp type BusinessType = string // 业务类型 const ( - BusinessTypeSaleAudit BusinessType = "saleAudit" // 销售合同审核 - BusinessTypeSaleAuditClose BusinessType = "saleAuditClose" // 销售合同关单审核 - BusinessTypeSaleAppendAudit BusinessType = "saleAuditAppend" // 销售合同追加商品 - BusinessTypePurchaseAudit BusinessType = "purchaseAudit" // 采购合同审核 - BusinessTypeShipmentAudit BusinessType = "shipmentAudit" // 订舱单审核 - BusinessTypeAccountingAudit BusinessType = "accountingAudit" // 做账合同审核 + BusinessTypeSaleAudit BusinessType = "saleAudit" // 销售合同审核 + BusinessTypeSaleAuditClose BusinessType = "saleAuditClose" // 销售合同关单审核 + BusinessTypeSaleAppendAudit BusinessType = "saleAuditAppend" // 销售合同追加商品 + BusinessTypePurchaseAudit BusinessType = "purchaseAudit" // 采购合同审核 + BusinessTypeShipmentAudit BusinessType = "shipmentAudit" // 订舱单审核 + BusinessTypeShipmentModifyAudit BusinessType = "shipmentModifyAudit" // 订舱单修改单审核 + BusinessTypeAccountingAudit BusinessType = "accountingAudit" // 做账合同审核 ) var BusinessTypeName = map[BusinessType]string{ - BusinessTypeSaleAudit: "销售合同审核", - BusinessTypeSaleAuditClose: "销售合同关单审核", - BusinessTypeSaleAppendAudit: "销售合同追加商品审核", - BusinessTypePurchaseAudit: "采购合同审核", - BusinessTypeShipmentAudit: "订舱单审核", - BusinessTypeAccountingAudit: "做账合同审核", + BusinessTypeSaleAudit: "销售合同审核", + BusinessTypeSaleAuditClose: "销售合同关单审核", + BusinessTypeSaleAppendAudit: "销售合同追加商品审核", + BusinessTypePurchaseAudit: "采购合同审核", + BusinessTypeShipmentAudit: "订舱单审核", + BusinessTypeShipmentModifyAudit: "订舱修改单审核", + BusinessTypeAccountingAudit: "做账合同审核", } type AuditStatus = int64 // 审核状态 diff --git a/erp/shipment/modify.go b/erp/shipment/modify.go new file mode 100644 index 0000000..05390cf --- /dev/null +++ b/erp/shipment/modify.go @@ -0,0 +1,262 @@ +package shipment + +import ( + "context" + "git.kumo.work/shama/service/client" + bean2 "git.kumo.work/shama/service/erp/bean" + modify2 "git.kumo.work/shama/service/erp/shipment/modify" + "git.kumo.work/shama/service/lib/bean" + "github.com/shopspring/decimal" + "time" +) + +type modify struct { + Modify modify2.Modify +} + +type ArgsShipmentList struct { + Page bean.Page + Search ShipmentSearch +} +type ShipmentSearch struct { + InvoiceSerial string // 出运发票号 + CustomIds []int64 // 客户筛选 + StaffIds []int64 // 业务员筛选 + CreatedStaffIds []int64 // 业务员筛选 + WorkflowStatus []int64 // 审核状态 + IsAudit int64 // 审核状态 是否审核 1=是 2=否 + ShipmentIds []int64 // 出舱id + ModifyIds []int64 // 订舱修改单id + InvoiceDateStart *time.Time // 发票日期 + InvoiceDateEnd *time.Time // 发票日期 + ContractDateStart *time.Time // 合同日期 + ContractDateEnd *time.Time // 合同日期 + BanFlag int64 // 是否有效 + ShipmentId int64 // 出运id +} +type ReplyShipmentList struct { + List []ShipmentItem `json:"list"` + Total int64 `json:"total"` +} +type ShipmentItem struct { + Id int64 `json:"id"` + ShipmentId int64 `json:"shipmentId"` + PiSerials string `json:"piSerials"` + InvoiceSerial string `json:"invoiceSerial"` + ContractDate *time.Time `json:"contractDate"` + InvoiceDate *time.Time `json:"invoiceDate"` + CustomName string `json:"customName"` + CustomShortName string `json:"customShortName"` + EstSailingDate *time.Time `json:"estSailingDate"` + ShipPort string `json:"shipPort"` + DischargePort string `json:"dischargePort"` + DischargePortEng string `json:"dischargePortEng"` + WorkflowStatus int64 `json:"workflowStatus"` + CreatedStaffId int64 `json:"createdStaffId"` + CreatedAt *time.Time `json:"createdAt"` + UpdatedAt *time.Time `json:"updatedAt"` +} + +// List @TITLE 列表 +func (m *modify) List(ctx context.Context, args ArgsShipmentList) (reply ReplyShipmentList, err error) { + xClient, err := client.GetClient(m) + if err != nil { + return + } + err = xClient.Call(ctx, "List", args, &reply) + return +} + +type ArgsShipmentAdd struct { + ShipmentId int64 // 订舱id +} + +// Add @TITLE 添加 +func (m *modify) Add(ctx context.Context, args ArgsShipmentAdd) (modifyId int64, err error) { + xClient, err := client.GetClient(m) + if err != nil { + return + } + err = xClient.Call(ctx, "Add", args, &modifyId) + return +} + +type ReplyModifyInfo struct { + Id int64 `json:"id"` + ShipmentId int64 `json:"shipmentId"` + VouchingClerkId int64 `json:"vouchingClerkId"` + CustomId int64 `json:"customId"` + CustomName string `json:"customName"` + CustomShortName string `json:"customShortName"` + EstSailingDate *time.Time `json:"estSailingDate"` + InvoiceSerial string `json:"invoiceSerial"` + InvoiceDate *time.Time `json:"invoiceDate"` + ContractDate *time.Time `json:"contractDate"` + TradeType string `json:"tradeType"` + OurCompany string `json:"ourCompany"` + PaymentType string `json:"paymentType"` + PaymentDepositRate *decimal.Decimal `json:"paymentDepositRate"` + PaymentDepositAmount *decimal.Decimal `json:"paymentDepositAmount"` + PaymentCycle *int64 `json:"paymentCycle"` + PaymentTerms string `json:"paymentTerms"` + CommissionRate *decimal.Decimal `json:"commissionRate"` + TradeCountry string `json:"tradeCountry"` + RecBank string `json:"recBank"` + RecBankEng string `json:"recBankEng"` + RecBankName string `json:"recBankName"` + RecBankNameEng string `json:"recBankNameEng"` + RecBankCardNo string `json:"recBankCardNo"` + RecBankCardName string `json:"recBankCardName"` + RecBankAddress string `json:"recBankAddress"` + Shipper string `json:"shipper"` + Consignee string `json:"consignee"` + Notifier string `json:"notifier"` + DueRecDate *time.Time `json:"dueRecDate"` + ShipMode string `json:"shipMode"` + ContainerType string `json:"containerType"` + ReadyDate *time.Time `json:"readyDate"` + ShipPort string `json:"shipPort"` + DischargePort string `json:"dischargePort"` + DischargePortEng string `json:"dischargePortEng"` + DeliveryCountry string `json:"deliveryCountry"` + DeliveryCountryEng string `json:"deliveryCountryEng"` + Destination string `json:"destination"` + FactoryHaulAdress string `json:"factoryHaulAdress"` + LogisticsCompanyId int64 `json:"logisticsCompanyId"` + LogisticsCompany string `json:"logisticsCompany"` + LogisticsCompanyContactName string `json:"logisticsCompanyContactName"` + LogisticsCompanyContactPhone string `json:"logisticsCompanyContactPhone"` + LogisticsCompanyContactTel string `json:"logisticsCompanyContactTel"` + LogisticsCompanyContactEmail string `json:"logisticsCompanyContactEmail"` + SeparableFlag int64 `json:"separableFlag"` + CopyCount *int64 `json:"copyCount"` + InsuranceRatio *int64 `json:"insuranceRatio"` + CreditSerial string `json:"creditSerial"` + CreditDate *time.Time `json:"creditDate"` + InlandShipWay string `json:"inlandShipWay"` + PackagingType string `json:"packagingType"` + ShipmentNo string `json:"shipmentNo"` + CnoSno string `json:"cnoSno"` + Declare1 string `json:"declare1"` + Declare2 string `json:"declare2"` + Info string `json:"info"` + RegulatoryMethods string `json:"regulatoryMethods"` + TaxExemptionNature string `json:"taxExemptionNature"` + MarkText string `json:"markText"` + MarkImg string `json:"markImg"` + WorkflowId int64 `json:"workflowId"` + WorkflowStatus int64 `json:"workflowStatus"` + WorkflowReason string `json:"workflowReason"` + CreatedStaffId int64 `json:"createdStaffId"` + CreatedAt *time.Time `json:"createdAt"` + SaleCurrency string `json:"saleCurrency"` + SaleCurrencyName string `json:"saleCurrencyName"` + SaleCurrencySymbol string `json:"saleCurrencySymbol"` + SaleCurrencyRate decimal.Decimal `json:"saleCurrencyRate"` + BanFlag int64 `json:"banFlag"` +} + +// Info @TITLE 详情 +func (m *modify) Info(ctx context.Context, modifyId int64) (reply ReplyModifyInfo, err error) { + xClient, err := client.GetClient(m) + if err != nil { + return + } + err = xClient.Call(ctx, "Info", modifyId, &reply) + return +} + +type ArgsShipmentEdit struct { + ModifyId int64 // 订舱修改单ID + ArgsShipmentData +} +type ArgsShipmentData struct { + EstSailingDate *time.Time // 预计发运日期 + InvoiceSerial string // 发票编号 + InvoiceDate *time.Time // 发票日期 + ContractDate *time.Time // 合同日期 + TradeType string // 贸易类型 + OurCompany string // 我方公司 + RecBank string // 收款银行 + RecBankEng string // 收款银行英文 + RecBankName string // 收款银行名称 + RecBankNameEng string // 收款银行名称英文 + RecBankCardNo string // 收款银行卡号 + RecBankCardName string // 收款银行卡名 + RecBankAddress string // 收汇银行地址 + PaymentTerms string // 付款条件 + TradeCountry string // 贸易国 + PaymentType string // 付款方式 + PaymentDepositRate decimal.Decimal // 定金比例 + PaymentCycle int64 // 付款周期 + CommissionRate decimal.Decimal // 佣金比例 + DueRecDate *time.Time // 预计收汇日期日期 + Shipper string // 发货方 + Consignee string // 收货方 + Notifier string // 通知方 + ShipMode string // 运输方式 + ContainerType string // 柜型 + ReadyDate *time.Time // 预计发运日期 + ShipPort string // 港口 + DischargePort string // 卸货港口 + DischargePortEng string // 卸货港口英文 + DeliveryCountry string // 运抵国 + DeliveryCountryEng string // 运抵国英文 + Destination string // 目的地 + FactoryHaulAdress string // 工厂拖柜地址 + SeparableFlag int64 // 可分批标记(1=可分 2=不可分) + LogisticsCompanyId int64 // 物流公司id + LogisticsCompany string // 物流公司 + LogisticsCompanyContactName string // 物流公司联系人 + LogisticsCompanyContactPhone string // 物流公司联系人电话 + LogisticsCompanyContactTel string // 物流公司联系人固定电话 + LogisticsCompanyContactEmail string // 物流公司联系人邮箱 + CopyCount int64 // 提单份数 + InsuranceRatio int64 // 保险比率 + CreditSerial string // 信用证号 + CreditDate *time.Time // 开证日期 + InlandShipWay string // 内陆运输 + PackagingType string // 包装种类 + ShipmentNo string // shipmentNO + CnoSno string // CONTAINER NO./SEAL NO. + Declare1 string // 声明1 + Declare2 string // 声明2 + Info string // 备注 + RegulatoryMethods string // 监管方式 + TaxExemptionNature string // 征免性质 + MarkText string // 唛头文字 + MarkImg string // 唛头图片 + VouchingClerkId int64 // 单证id +} + +// Edit @TITLE 编辑 +func (m *modify) Edit(ctx context.Context, args ArgsShipmentEdit) (err error) { + xClient, err := client.GetClient(m) + if err != nil { + return + } + reply := 0 + err = xClient.Call(ctx, "Edit", args, &reply) + return +} + +// Customs @TITLE 报关信息 +func (m *modify) Customs(ctx context.Context, modifyId int64) (reply bean2.ReplyCustoms, err error) { + xClient, err := client.GetClient(m) + if err != nil { + return + } + err = xClient.Call(ctx, "Customs", modifyId, &reply) + return +} + +// Cancel @TITLE 作废 +func (m *modify) Cancel(ctx context.Context, modifyId int64) (err error) { + xClient, err := client.GetClient(m) + if err != nil { + return + } + reply := 0 + err = xClient.Call(ctx, "Cancel", modifyId, &reply) + return +} diff --git a/erp/shipment/modify/audit.go b/erp/shipment/modify/audit.go new file mode 100644 index 0000000..62498f1 --- /dev/null +++ b/erp/shipment/modify/audit.go @@ -0,0 +1,25 @@ +package modify + +import ( + "context" + "git.kumo.work/shama/service/client" +) + +type audit struct { +} +type ArgsAuditSubmit struct { + StaffId int64 // 操作人 + ModifyId int64 // 订舱修改单id + AuditStaffIds []int64 // 审核人 +} + +// Submit @TITLE 提交审核 +func (a *audit) Submit(ctx context.Context, args ArgsAuditSubmit) (err error) { + xClient, err := client.GetClient(a) + if err != nil { + return + } + reply := 0 + err = xClient.Call(ctx, "Submit", args, &reply) + return +} diff --git a/erp/shipment/modify/cost.go b/erp/shipment/modify/cost.go new file mode 100644 index 0000000..3f052fa --- /dev/null +++ b/erp/shipment/modify/cost.go @@ -0,0 +1,76 @@ +package modify + +import ( + "context" + "git.kumo.work/shama/service/client" + "github.com/shopspring/decimal" + "time" +) + +type cost struct { +} + +type CostItem struct { + Id int64 `json:"id"` + Name string `json:"name"` + Amount decimal.Decimal `json:"amount"` + Remarks string `json:"remarks"` + CreatedAt *time.Time `json:"createdAt"` + UpdatedAt *time.Time `json:"updatedAt"` +} + +// All @TITLE 获取费用 +func (c *cost) All(ctx context.Context, modifyId int64) (reply []CostItem, err error) { + xClient, err := client.GetClient(c) + if err != nil { + return + } + err = xClient.Call(ctx, "All", modifyId, &reply) + return +} + +type ArgsCostAdd struct { + ModifyId int64 // 订舱修改单ID + CostAdd +} + +type CostAdd struct { + Name string // 费用名 + Amount decimal.Decimal // 金额 + Remarks string // 备注信息 +} + +// Add @TITLE 添加费用 +func (c *cost) Add(ctx context.Context, args ArgsCostAdd) (err error) { + xClient, err := client.GetClient(c) + if err != nil { + return + } + reply := 0 + return xClient.Call(ctx, "Add", args, &reply) +} + +type ArgsCostEdit struct { + CostId int64 // 费用ID + CostAdd +} + +// Edit @TITLE 编辑费用 +func (c *cost) Edit(ctx context.Context, args ArgsCostEdit) (err error) { + xClient, err := client.GetClient(c) + if err != nil { + return + } + reply := 0 + return xClient.Call(ctx, "Edit", args, &reply) +} + +// Delete @TITLE 删除费用 +func (c *cost) Delete(ctx context.Context, costIds []int64) (err error) { + xClient, err := client.GetClient(c) + if err != nil { + return + } + reply := 0 + return xClient.Call(ctx, "Delete", costIds, &reply) +} diff --git a/erp/shipment/modify/customsCost.go b/erp/shipment/modify/customsCost.go new file mode 100644 index 0000000..36cc1f1 --- /dev/null +++ b/erp/shipment/modify/customsCost.go @@ -0,0 +1,77 @@ +package modify + +import ( + "context" + "git.kumo.work/shama/service/client" + "github.com/shopspring/decimal" + "time" +) + +type customsCost struct { +} + +type CustomsCostItem struct { + Id int64 `json:"id"` + Name string `json:"name"` + Type int64 `json:"type"` + Amount decimal.Decimal `json:"amount"` + Remarks string `json:"remarks"` + CreatedAt *time.Time `json:"createdAt"` + UpdatedAt *time.Time `json:"updatedAt"` +} + +// All @TITLE 获取费用 +func (c *customsCost) All(ctx context.Context, modifyId int64) (reply []CustomsCostItem, err error) { + xClient, err := client.GetClient(c) + if err != nil { + return + } + err = xClient.Call(ctx, "All", modifyId, &reply) + return +} + +type ArgsCustomsCostAdd struct { + ModifyId int64 // 订舱修改单ID + CustomsCostAdd +} + +type CustomsCostAdd struct { + Name string // 费用名 + Amount decimal.Decimal // 金额 + Remarks string // 备注信息 +} + +// Add @TITLE 添加费用 +func (c *customsCost) Add(ctx context.Context, args ArgsCustomsCostAdd) (err error) { + xClient, err := client.GetClient(c) + if err != nil { + return + } + reply := 0 + return xClient.Call(ctx, "Add", args, &reply) +} + +type ArgsCustomsCostEdit struct { + CustomsCostId int64 // 费用ID + CustomsCostAdd +} + +// Edit @TITLE 编辑费用 +func (c *customsCost) Edit(ctx context.Context, args ArgsCustomsCostEdit) (err error) { + xClient, err := client.GetClient(c) + if err != nil { + return + } + reply := 0 + return xClient.Call(ctx, "Edit", args, &reply) +} + +// Delete @TITLE 删除费用 +func (c *customsCost) Delete(ctx context.Context, customsCostIds []int64) (err error) { + xClient, err := client.GetClient(c) + if err != nil { + return + } + reply := 0 + return xClient.Call(ctx, "Delete", customsCostIds, &reply) +} diff --git a/erp/shipment/modify/gift.go b/erp/shipment/modify/gift.go new file mode 100644 index 0000000..2e8c6d8 --- /dev/null +++ b/erp/shipment/modify/gift.go @@ -0,0 +1,127 @@ +package modify + +import ( + "context" + "git.kumo.work/shama/service/client" + "github.com/shopspring/decimal" + "time" +) + +type gift struct { +} + +type ArgsGiftSearch struct { + ModifyId int64 // 订舱修改单id + GiftIds []int64 // 赠品id +} + +type GiftItem struct { + Id int64 `json:"id"` + Name string `json:"name"` + EngName string `json:"engName"` + CustomsName string `json:"customsName"` + CustomsSerial string `json:"customsSerial"` + CustomsMeasureUnit string `json:"customsMeasureUnit"` + CustomsInvoiceUnit string `json:"customsInvoiceUnit"` + CustomsDetail string `json:"customsDetail"` + ShipmentCount int64 `json:"shipmentCount"` + ShipmentCountUnit string `json:"shipmentCountUnit"` + OuterBoxCount int64 `json:"outerBoxCount"` + TotalVolume decimal.Decimal `json:"totalVolume"` + TotalGrossWeight decimal.Decimal `json:"totalGrossWeight"` + TotalNetWeight decimal.Decimal `json:"totalNetWeight"` + CustomsPrice decimal.Decimal `json:"customsPrice"` + CustomsAmount decimal.Decimal `json:"customsAmount"` + DomesticSupply string `json:"domesticSupply"` + TaxExemption string `json:"taxExemption"` + ContainerNumber string `json:"containerNumber"` + SealNumber string `json:"sealNumber"` + Remark string `json:"remark"` + Sort int64 `json:"sort"` + IsSerial int64 `json:"isSerial"` + IsCustoms int64 `json:"isCustoms"` + CreatedAt *time.Time `json:"createdAt"` +} + +// All @TITLE 全部赠品 +func (g *gift) All(ctx context.Context, args ArgsGiftSearch) (reply []GiftItem, err error) { + xClient, err := client.GetClient(g) + if err != nil { + return + } + err = xClient.Call(ctx, "All", args, &reply) + return +} + +type ArgsGiftAdd struct { + ModifyId int64 // 订舱修改单ID + Gifts []GiftAdd +} + +type GiftAdd struct { + Name string // 中文品名 + EngName string // 英文品名 + CustomsName string // 中文报关名称 + CustomsSerial string // 海关编码 + CustomsMeasureUnit string // 报关单位 + CustomsInvoiceUnit string // 开票单位 + CustomsDetail string // 申报要素 + ShipmentCount int64 // 出运数量 + ShipmentCountUnit string // 数量单位 + OuterBoxCount int64 // 箱数 + TotalVolume decimal.Decimal // 体积 + TotalGrossWeight decimal.Decimal // 毛重 + TotalNetWeight decimal.Decimal // 净重 + CustomsPrice decimal.Decimal // 报关单价 + CustomsAmount decimal.Decimal // 报关总价 + DomesticSupply string // 境内货源地 + TaxExemption string // 征免 + ContainerNumber string // 箱号 + SealNumber string // 封号 + Remark string // 备注 + Sort int64 // 排序 +} + +// Add @TITLE 添加赠品 +func (g *gift) Add(ctx context.Context, args ArgsGiftAdd) (err error) { + xClient, err := client.GetClient(g) + if err != nil { + return + } + reply := 0 + return xClient.Call(ctx, "Add", args, &reply) +} + +type ArgsGiftEdit struct { + ModifyId int64 // 订舱修改单ID + Gifts []GiftEdit +} +type GiftEdit struct { + GiftId int64 // 费用ID + GiftAdd +} + +// Edit @TITLE 编辑赠品 +func (g *gift) Edit(ctx context.Context, args ArgsGiftEdit) (err error) { + xClient, err := client.GetClient(g) + if err != nil { + return + } + reply := 0 + return xClient.Call(ctx, "Edit", args, &reply) +} + +type ArgsGiftDelete struct { + ModifyId int64 // 订舱修改单ID + GiftIds []int64 // 赠品id +} + +// Delete @TITLE 删除赠品 +func (g *gift) Delete(ctx context.Context, args ArgsGiftDelete) (err error) { + xClient, err := client.GetClient(g) + if err != nil { + return + } + reply := 0 + return xClient.Call(ctx, "Delete", args, &reply) +} diff --git a/erp/shipment/modify/modify.go b/erp/shipment/modify/modify.go new file mode 100644 index 0000000..d84b17b --- /dev/null +++ b/erp/shipment/modify/modify.go @@ -0,0 +1,10 @@ +package modify + +type Modify struct { + Sale sale + Cost cost + SaleProduct saleProduct + CustomsCost customsCost + Gift gift + Audit audit +} diff --git a/erp/shipment/modify/sale.go b/erp/shipment/modify/sale.go new file mode 100644 index 0000000..8fee9ad --- /dev/null +++ b/erp/shipment/modify/sale.go @@ -0,0 +1,56 @@ +package modify + +import ( + "context" + "git.kumo.work/shama/service/client" +) + +type sale struct { +} + +type SaleItem struct { + Id int64 `json:"id"` + SaleId int64 `json:"saleId"` + PiSerial string `json:"piSerial"` + PoSerial string `json:"poSerial"` +} + +// All @TITLE 获取销售合同 +func (s *sale) All(ctx context.Context, modifyId int64) (reply []SaleItem, err error) { + xClient, err := client.GetClient(s) + if err != nil { + return + } + err = xClient.Call(ctx, "All", modifyId, &reply) + return +} + +type ArgsSaleAdd struct { + ModifyId int64 // 订舱修改单id + SaleIds []int64 // 销售合同 +} + +// Add @TITLE 添加销售合同 +func (s *sale) Add(ctx context.Context, args ArgsSaleAdd) (err error) { + xClient, err := client.GetClient(s) + if err != nil { + return + } + reply := 0 + return xClient.Call(ctx, "Add", args, &reply) +} + +type ArgsSaleDelete struct { + ModifyId int64 // 订舱修改单id + SaleIds []int64 // 销售合同 +} + +// Delete @TITLE 删除销售合同 +func (s *sale) Delete(ctx context.Context, args ArgsSaleDelete) (err error) { + xClient, err := client.GetClient(s) + if err != nil { + return + } + reply := 0 + return xClient.Call(ctx, "Delete", args, &reply) +} diff --git a/erp/shipment/modify/saleProduct.go b/erp/shipment/modify/saleProduct.go new file mode 100644 index 0000000..6678f3c --- /dev/null +++ b/erp/shipment/modify/saleProduct.go @@ -0,0 +1,249 @@ +package modify + +import ( + "context" + "git.kumo.work/shama/service/client" + "github.com/shopspring/decimal" + "time" +) + +type saleProduct struct { +} + +type SaleProductItem struct { + Id int64 `json:"id"` + Mold int64 `json:"mold"` + ParentSaleProductId int64 `json:"parentSaleProductId"` + SaleProductId int64 `json:"saleProductId"` + PiSerial string `json:"piSerial"` + Sort int64 `json:"sort"` + Po string `json:"po"` + Serial string `json:"serial"` + ImgFilePaths []string `json:"imgFilePaths"` + CustomSerial string `json:"customSerial"` + PackageDescription string `json:"packageDescription"` + PackageEngDescription string `json:"packageEngDescription"` + EngName string `json:"engName"` + Name string `json:"name"` + CustomsName string `json:"customsName"` + CustomsSerial string `json:"customsSerial"` + CustomsMeasureUnit string `json:"customsMeasureUnit"` + CustomsInvoiceUnit string `json:"customsInvoiceUnit"` + CustomsDetail string `json:"customsDetail"` + BlEngName string `json:"blEngName"` + BoxCount int64 `json:"boxCount"` + InnerNum int64 `json:"innerNum"` + InnerBoxCount *int64 `json:"innerBoxCount"` + BoxNumUnit string `json:"boxNumUnit"` + OuterNum int64 `json:"outerNum"` + ShipmentCount int64 `json:"shipmentCount"` + ShipmentCountUnit string `json:"shipmentCountUnit"` + Length decimal.Decimal `json:"length"` + Width decimal.Decimal `json:"width"` + Height decimal.Decimal `json:"height"` + Volume decimal.Decimal `json:"volume"` + TotalVolume decimal.Decimal `json:"totalVolume"` + NetGrossVolume int64 `json:"netGrossVolume"` + GrossWeight decimal.Decimal `json:"grossWeight"` + TotalGrossWeight decimal.Decimal `json:"totalGrossWeight"` + NetWeight decimal.Decimal `json:"netWeight"` + TotalNetWeight decimal.Decimal `json:"totalNetWeight"` + CustomsVolume decimal.Decimal `json:"customsVolume"` + TotalCustomsVolume decimal.Decimal `json:"totalCustomsVolume"` + CustomsNetWeight decimal.Decimal `json:"customsNetWeight"` + TotalCustomsNetWeight decimal.Decimal `json:"totalCustomsNetWeight"` + CustomsGrossWeight decimal.Decimal `json:"customsGrossWeight"` + TotalCustomsGrossWeight decimal.Decimal `json:"totalCustomsGrossWeight"` + SalePrice decimal.Decimal `json:"salePrice"` + SaleAmount decimal.Decimal `json:"saleAmount"` + FactoryName string `json:"factoryName"` + CurrencyRate decimal.Decimal `json:"currencyRate"` + Brand string `json:"brand"` + DomesticSupply string `json:"domesticSupply"` + EpmNo string `json:"epmNo"` + HsSerial int64 `json:"hsSerial"` + TaxExemption string `json:"taxExemption"` + ItemNumber string `json:"itemNumber"` + Texture string `json:"texture"` + EngTexture string `json:"engTexture"` + Remark1 string `json:"remark1"` + Remark2 string `json:"remark2"` + Remark3 string `json:"remark3"` + Remark4 string `json:"remark4"` + Remark5 string `json:"remark5"` + Remark6 string `json:"remark6"` + ExchangeSettlementRemark string `json:"exchangeSettlementRemark"` + RemarkImg string `json:"remarkImg"` + ContainerNumber string `json:"containerNumber"` + SealNumber string `json:"sealNumber"` + PurchasePrice decimal.Decimal `json:"purchasePrice"` + PurchaseAmount decimal.Decimal `json:"purchaseAmount"` + IsSerial int64 `json:"isSerial"` + IsCustoms int64 `json:"isCustoms"` + CreatedAt *time.Time `json:"createdAt"` + UpdatedAt *time.Time `json:"updatedAt"` + Children []*SaleProductItem `json:"children"` +} +type ArgsSaleProductSearch struct { + ModifyId int64 // 订舱单修改id + SaleIds []int64 // 销售合同 + PiSerial string // pi号 + ShipmentSaleProductIds []int64 // 出舱单商品id +} + +// All @TITLE 获取商品 +func (s *saleProduct) All(ctx context.Context, search ArgsSaleProductSearch) (reply []SaleProductItem, err error) { + xClient, err := client.GetClient(s) + if err != nil { + return + } + err = xClient.Call(ctx, "All", search, &reply) + return +} + +type ArgsSaleProductAdd struct { + ModifyId int64 // 订舱修改单id + Products []SaleProductAdd // 产品信息 +} +type SaleProductAdd struct { + SaleProductId int64 // 销售商品id + CustomSerial string // 客户货号 + PackageDescription string // 包装描述 + PackageEngDescription string // 包装英文描述 + Name string // 中文品名 + EngName string // 英文品名 + CustomsSerial string // 海关编码 + CustomsName string // 中文报关名称 + CustomsMeasureUnit string // 报关单位 + CustomsInvoiceUnit string // 开票单位 + CustomsDetail string // 申报要素 + BlEngName string // 提单英文名 + InnerNum *int64 // 内盒入数 + BoxNumUnit string // 箱数单位 + OuterNum *int64 // 装箱单数 + ShipmentCount int64 // 出运数量 + ShipmentCountUnit string // 数量单位 + Length *decimal.Decimal // 长 + Width *decimal.Decimal // 宽 + Height *decimal.Decimal // 高 + NetWeight *decimal.Decimal // 净重 + GrossWeight *decimal.Decimal // 毛重 + NetGrossVolume int64 // 净毛体计算类型 1=内盒 2=外箱 + CustomsVolume decimal.Decimal // 报关体积 + TotalCustomsVolume decimal.Decimal // 报关总体积 + CustomsNetWeight decimal.Decimal // 报关净重 + TotalCustomsNetWeight decimal.Decimal // 报关总净重 + CustomsGrossWeight decimal.Decimal // 报关毛重 + TotalCustomsGrossWeight decimal.Decimal // 报关总毛重 + CustomsBrand string // 品牌 + DomesticSupply string // 货源地 + FactoryName string // 工厂名称 + HsSerial int64 // 是否商检 1=商检 2=未商检 + Texture string // 材质 + EngTexture string // 英文材质 + EpmNo string // EPM NO + TaxExemption string // 免征税 + ItemNumber string // 项号 + Remark1 string // 备注1 + Remark2 string // 备注2 + Remark3 string // 备注3 + Remark4 string // 备注4 + Remark5 string // 备注5 + Remark6 string // 备注6 + RemarkImg string // 图片备注 + ContainerNumber string // 箱号 + SealNumber string // 封号 +} + +// Add @TITLE 添加 +func (s *saleProduct) Add(ctx context.Context, args ArgsSaleProductAdd) (err error) { + xClient, err := client.GetClient(s) + if err != nil { + return + } + reply := 0 + return xClient.Call(ctx, "Add", args, &reply) +} + +type ArgsSaleProductEdit struct { + ModifyId int64 // 订舱修改单id + Products []SaleProductEdit +} +type SaleProductEdit struct { + ShipmentSaleProductId int64 // 出舱单商品id + Sort int64 // 排序 + Po string // Po + CustomSerial string // 客户货号 + PackageDescription string // 包装 + PackageEngDescription string // 包装英文描述 + Name string // 中文品名 + EngName string // 英文品名 + CustomsSerial string // 海关编码 + CustomsName string // 中文报关名称 + CustomsMeasureUnit string // 报关单位 + CustomsInvoiceUnit string // 开票单位 + CustomsDetail string // 申报要素 + BlEngName string // 提单英文名 + InnerNum *int64 // 内盒入数 + BoxNumUnit string // 箱数单位 + OuterNum *int64 // 装箱单数 + ShipmentCount int64 // 出运数量 + ShipmentCountUnit string // 数量单位 + Length *decimal.Decimal // 长 + Width *decimal.Decimal // 宽 + Height *decimal.Decimal // 高 + NetWeight *decimal.Decimal // 净重 + GrossWeight *decimal.Decimal // 毛重 + NetGrossVolume int64 // 净毛体计算类型 1=内盒 2=外箱 + CustomsVolume decimal.Decimal // 报关体积 + TotalCustomsVolume decimal.Decimal // 报关总体积 + CustomsNetWeight decimal.Decimal // 报关净重 + TotalCustomsNetWeight decimal.Decimal // 报关总净重 + CustomsGrossWeight decimal.Decimal // 报关毛重 + TotalCustomsGrossWeight decimal.Decimal // 报关总毛重 + SalePrice decimal.Decimal // 销售单价 + CustomsBrand string // 品牌 + DomesticSupply string // 货源地 + FactoryName string // 工厂名称 + HsSerial int64 // 是否商检 1=商检 2=未商检 + Texture string // 材质 + EngTexture string // 英文材质 + EpmNo string // EPM NO + TaxExemption string // 免征税 + ItemNumber string // 项号 + Remark1 string // 备注1 + Remark2 string // 备注2 + Remark3 string // 备注3 + Remark4 string // 备注4 + Remark5 string // 备注5 + Remark6 string // 备注6 + ExchangeSettlementRemark string // 结汇备注 + RemarkImg string // 图片备注 + ContainerNumber string // 箱号 + SealNumber string // 封号 +} + +// Edit @TITLE 编辑 +func (s *saleProduct) Edit(ctx context.Context, args ArgsSaleProductEdit) (err error) { + xClient, err := client.GetClient(s) + if err != nil { + return + } + reply := 0 + return xClient.Call(ctx, "Edit", args, &reply) +} + +type ArgsSaleProductDelete struct { + ModifyId int64 // 订舱修改单id + ShipmentSaleProductIds []int64 // 出运参评id +} + +// Delete @TITLE 删除出运产品 +func (s *saleProduct) Delete(ctx context.Context, args ArgsSaleProductDelete) (err error) { + xClient, err := client.GetClient(s) + if err != nil { + return + } + reply := 0 + return xClient.Call(ctx, "Delete", args, &reply) +} diff --git a/erp/shipment/shipment.go b/erp/shipment/shipment.go index 4dc3df3..5fdefc8 100644 --- a/erp/shipment/shipment.go +++ b/erp/shipment/shipment.go @@ -10,4 +10,5 @@ type Shipment struct { Serial serial Customs customs ExchangeSettlement exchangeSettlement + Modify modify }