service/erp/shipment.go

305 lines
15 KiB
Go
Raw Normal View History

2024-08-13 16:06:41 +08:00
package erp
import (
"context"
"git.kumo.work/shama/service/client"
shipment2 "git.kumo.work/shama/service/erp/shipment"
"git.kumo.work/shama/service/lib/bean"
"github.com/shopspring/decimal"
"time"
)
type shipment struct {
shipment2.Shipment
}
type ArgsShipmentList struct {
Page bean.Page
Search ShipmentSearch
}
type ShipmentSearch struct {
InvoiceSerial string // 出运发票号
CustomIds []int64 // 客户筛选
StaffIds []int64 // 业务员筛选
}
type ReplyShipmentList struct {
List []ShipmentItem `json:"list"`
Total int64 `json:"total"`
}
type ShipmentItem struct {
Id int64 `json:"id"`
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"`
CreatedStaffId int64 `json:"createdStaffId"`
CreatedAt *time.Time `json:"createdAt"`
UpdatedAt *time.Time `json:"updatedAt"`
}
// List @TITLE 列表
func (s *shipment) List(ctx context.Context, args ArgsShipmentList) (reply ReplyShipmentList, err error) {
xClient, err := client.GetClient(s)
if err != nil {
return
}
err = xClient.Call(ctx, "List", args, &reply)
return
}
type ArgsShipmentAdd struct {
StaffId int64 // 员工id
ShipmentAdd ShipmentAdd
}
type ShipmentAdd struct {
CustomID int64 // 客户id
EstSailingDate *time.Time // 预计船期
InvoiceSerial string // 发票号
InvoiceDate time.Time // 发票日期
ContractDate *time.Time // 合同日期
TradeType string // 贸易类型
OurCompany string // 我方公司
PaymentType string // 付款方式
PaymentDepositRate *decimal.Decimal // 付款定金比例
PaymentDepositAmount *decimal.Decimal // 定价金额
PaymentCycle *int64 // 付款周期
PaymentTerms string // 条款
CommissionRate *decimal.Decimal // 佣金比例
TradeCountry string // 贸易国别
RecBank string // 收汇银行
RecBankEng string // 收汇银行英文
RecBankName string // 收汇银行名称
RecBankNameEng string // 收汇银行名称英文
RecBankCardNo string // 收汇银行卡号
RecBankCardName string // 收汇银行户名
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 // 工厂拖柜地址
2024-09-03 17:47:24 +08:00
LogisticsCompanyId int64 // 物流公司id
2024-08-13 16:06:41 +08:00
LogisticsCompany string // 物流公司
LogisticsCompanyContactName string // 物流公司联系人
LogisticsCompanyContactPhone string // 物流公司手机号
LogisticsCompanyContactTel string // 物流公司固定电话
LogisticsCompanyContactEmail string // 物流公司邮箱
SeparableFlag int64 // 可分批标记1=可分 2=不可分)
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 // 唛头图片
SaleIds []int64 // 销售合同
}
// Add @TITLE 添加
2024-08-26 16:46:45 +08:00
func (s *shipment) Add(ctx context.Context, args ArgsShipmentAdd) (shipmentId int64, err error) {
2024-08-13 16:06:41 +08:00
xClient, err := client.GetClient(s)
if err != nil {
return
}
2024-08-26 16:46:45 +08:00
err = xClient.Call(ctx, "Add", args, &shipmentId)
2024-08-13 16:06:41 +08:00
return
}
type ReplyShipmentInfo struct {
Id int64 `json:"id"`
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"`
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"`
2024-09-03 17:47:24 +08:00
LogisticsCompanyId int64 `json:"logisticsCompanyId"`
2024-08-13 16:06:41 +08:00
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"`
}
// Info @TITLE 详情
func (s *shipment) Info(ctx context.Context, shipmentId int64) (reply ReplyShipmentInfo, err error) {
xClient, err := client.GetClient(s)
if err != nil {
return
}
err = xClient.Call(ctx, "Info", shipmentId, &reply)
return
}
type ArgsShipmentEdit struct {
ShipmentId 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 // 收款银行卡名
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=不可分)
2024-09-03 17:47:24 +08:00
LogisticsCompanyId int64 // 物流公司id
2024-08-13 16:06:41 +08:00
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 // 唛头图片
}
// Edit @TITLE 编辑
func (s *shipment) Edit(ctx context.Context, args ArgsShipmentEdit) (err error) {
xClient, err := client.GetClient(s)
if err != nil {
return
}
reply := 0
err = xClient.Call(ctx, "Edit", args, &reply)
return
}
2024-09-23 16:04:00 +08:00
type ReplyCustoms struct {
CostAmount decimal.Decimal `json:"costAmount"`
CustomsCostAmount decimal.Decimal `json:"customsCostAmount"`
SaleTotalAmount decimal.Decimal `json:"saleTotalAmount"`
Products []CustomsProductItem `json:"products"`
}
type CustomsProductItem struct {
Index int `json:"index"`
Serial string `json:"serial"`
CustomsName string `json:"customsName"`
ShipmentCount int64 `json:"shipmentCount"`
SalePrice decimal.Decimal `json:"salePrice"`
SaleAmount decimal.Decimal `json:"saleAmount"`
CustomsPrice decimal.Decimal `json:"customsPrice"`
CustomsAmount decimal.Decimal `json:"customsAmount"`
AdjustAmount decimal.Decimal `json:"adjustAmount"`
RealCustomsPrice decimal.Decimal `json:"realCustomsPrice"`
RealCustomsAmount decimal.Decimal `json:"realCustomsAmount"`
}
// Customs @TITLE 报关信息
func (s *shipment) Customs(ctx context.Context, shipmentId int64) (reply ReplyCustoms, err error) {
xClient, err := client.GetClient(s)
if err != nil {
return
}
err = xClient.Call(ctx, "Customs", shipmentId, &reply)
return
}