添加 财务报表审批
This commit is contained in:
parent
b8ec6a70a6
commit
5ae4913fca
File diff suppressed because it is too large
Load Diff
@ -329,6 +329,7 @@ message CreateRequest {
|
||||
string TypeName = 28 [json_name = "typeName"];
|
||||
string GroupName = 29 [json_name = "groupName"];
|
||||
BundlePayPrice BundlePayPrice = 30 [json_name = "bundlePayPrice"];
|
||||
FinancialFrom FinancialFrom = 31 [json_name = "financialFrom"];
|
||||
}
|
||||
|
||||
message WorkFlow {
|
||||
@ -429,3 +430,41 @@ message GetNameRequest {
|
||||
message GetNameResponse {
|
||||
repeated string Name = 1 [json_name = "name"];
|
||||
}
|
||||
|
||||
message FinancialFrom {
|
||||
uint64 ID=1 [json_name = "ID"];
|
||||
uint64 DeletedAt=2 [json_name = "deletedAt"];
|
||||
string CreatedAt=3 [json_name = "createdAt"];
|
||||
string UpdatedAt=4 [json_name = "updatedAt"];
|
||||
uint64 ApprovalID=5 [json_name = "approvalID"];
|
||||
string PaymentCompany = 6 [json_name = "paymentCompany"];
|
||||
string TransactionDepartment = 7 [json_name = "transactionDepartment"];
|
||||
string Payee = 8 [json_name = "payee"];
|
||||
string BeneficiaryBank = 9 [json_name = "beneficiaryBank"];
|
||||
string BankNo = 10 [json_name = "bankNo"];
|
||||
CostInfo CostInfo = 11 [json_name = "costInfo"];
|
||||
string PaymentMethod = 12 [json_name = "paymentMethod"];
|
||||
InvoiceInfo InvoiceInfo = 13 [json_name = "invoiceInfo"];
|
||||
}
|
||||
|
||||
message CostInfo {
|
||||
string Description = 1 [json_name = "description"];
|
||||
string UnitPrice = 2 [json_name = "unitPrice"];
|
||||
string CostUnit = 3 [json_name = "costUnit"];
|
||||
int64 CostNum = 4 [json_name = "costNum"];
|
||||
string TotalPrice = 5 [json_name = "totalPrice"];
|
||||
string UsedDepartment = 6 [json_name = "usedDepartment"];
|
||||
}
|
||||
|
||||
message InvoiceInfo {
|
||||
string InvoiceDate = 1 [json_name = "invoiceDate"];
|
||||
string InvoiceNo = 2 [json_name = "invoiceNo"];
|
||||
string InvoiceProvider = 3 [json_name = "invoiceProvider"];
|
||||
string Amount = 4 [json_name = "amount"];
|
||||
string UseTo = 5 [json_name = "useTo"];
|
||||
string Applicant = 6 [json_name = "applicant"];
|
||||
string PaymentMethod = 7 [json_name = "paymentMethod"];
|
||||
string PaymentObj = 8 [json_name = "paymentObj"];
|
||||
string InvoiceType = 9 [json_name = "invoiceType"];
|
||||
string Notes = 10 [json_name = "notes"];
|
||||
}
|
@ -263,6 +263,11 @@ func (this *CreateRequest) Validate() error {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("BundlePayPrice", err)
|
||||
}
|
||||
}
|
||||
if this.FinancialFrom != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.FinancialFrom); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("FinancialFrom", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *WorkFlow) Validate() error {
|
||||
@ -331,3 +336,22 @@ func (this *GetNameRequest) Validate() error {
|
||||
func (this *GetNameResponse) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *FinancialFrom) Validate() error {
|
||||
if this.CostInfo != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.CostInfo); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("CostInfo", err)
|
||||
}
|
||||
}
|
||||
if this.InvoiceInfo != nil {
|
||||
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.InvoiceInfo); err != nil {
|
||||
return github_com_mwitkow_go_proto_validators.FieldError("InvoiceInfo", err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (this *CostInfo) Validate() error {
|
||||
return nil
|
||||
}
|
||||
func (this *InvoiceInfo) Validate() error {
|
||||
return nil
|
||||
}
|
||||
|
@ -51,6 +51,7 @@ type Approval struct {
|
||||
BundlePayPrice *BundlePayPrice `gorm:"foreignKey:ApprovalID" json:"BundlePayPrice"` //关联的type
|
||||
ExhibitionReward *ExhibitionReward `gorm:"foreignKey:ApprovalID" json:"ExhibitionReward"` //关联的type
|
||||
ApprovalWorkFlows []*ApprovalWorkFlow `gorm:"foreignKey:ApprovalID" json:"ApprovalWorkFlows"`
|
||||
FinancialFrom []*FinancialFrom `gorm:"foreignKey:ApprovalID" json:"financialFrom"`
|
||||
}
|
||||
|
||||
func (j *KeyInfos) Scan(src interface{}) error {
|
||||
@ -72,6 +73,7 @@ const (
|
||||
TypeBundle = "bundle"
|
||||
TypeBundlePayPrice = "bundlePayPrice"
|
||||
TypeArtExhibitionReward = "artExhibitionReward"
|
||||
TypeFinancialForm = "financialFormApply"
|
||||
)
|
||||
const (
|
||||
StatusDoing = 1
|
||||
@ -533,7 +535,8 @@ func MyAllWorkApprovals(in *approval.ListRequest) ([]*Approval, int64) {
|
||||
Preload("ApprovalType.ApprovalTypeGroup").
|
||||
Preload("ExhibitionReward.ApprovalExhibitions").
|
||||
Preload("ApprovalWorkFlows").
|
||||
Preload("Exhibition.ApprovalExhibitions")
|
||||
Preload("Exhibition.ApprovalExhibitions").
|
||||
Preload("FinancialFrom")
|
||||
|
||||
//我未阅读的和我未操作的
|
||||
DB.Model(&Approval{}).Where(&Approval{Type: in.Type}).Where(&Approval{NowUserId: in.UserID, Status: StatusDoing}).Order("id desc").Select("id").Find(&ids)
|
||||
@ -570,7 +573,8 @@ func MyApprovalWorkApprovals(in *approval.ListRequest) ([]*Approval, int64) {
|
||||
Preload("BundlePayPrice").
|
||||
Preload("ApprovalType.ApprovalTypeGroup").
|
||||
Preload("ApprovalWorkFlows").
|
||||
Preload("Exhibition.ApprovalExhibitions")
|
||||
Preload("Exhibition.ApprovalExhibitions").
|
||||
Preload("FinancialFrom")
|
||||
|
||||
if in.Type != "" {
|
||||
modelObj = modelObj.Where(&Approval{Type: in.Type})
|
||||
@ -627,7 +631,8 @@ func MyWorkApprovals(in *approval.ListRequest) ([]*Approval, int64) {
|
||||
Preload("ApprovalType.ApprovalTypeGroup").
|
||||
Preload("ExhibitionReward.ApprovalExhibitions").
|
||||
Preload("ApprovalWorkFlows").
|
||||
Preload("Exhibition.ApprovalExhibitions")
|
||||
Preload("Exhibition.ApprovalExhibitions").
|
||||
Preload("FinancialFrom")
|
||||
|
||||
if in.Type != "" {
|
||||
modelObj = modelObj.Where(&Approval{Type: in.Type})
|
||||
@ -683,7 +688,8 @@ func MySubmitApprovals(in *approval.ListRequest) ([]*Approval, int64) {
|
||||
Preload("ApprovalWorkFlows").
|
||||
Preload("ExhibitionReward.ApprovalExhibitions").
|
||||
Preload("ApprovalType.ApprovalTypeGroup").
|
||||
Preload("Exhibition.ApprovalExhibitions")
|
||||
Preload("Exhibition.ApprovalExhibitions").
|
||||
Preload("FinancialFrom")
|
||||
|
||||
if in.Status != 0 {
|
||||
modelObj = modelObj.Where(&Approval{Status: int8(in.Status)})
|
||||
@ -715,7 +721,8 @@ func MyReadApprovals(in *approval.ListRequest) ([]*Approval, int64) {
|
||||
Preload("ApprovalWorkFlows").
|
||||
Preload("ExhibitionReward.ApprovalExhibitions").
|
||||
Preload("ApprovalType.ApprovalTypeGroup").
|
||||
Preload("Exhibition.ApprovalExhibitions")
|
||||
Preload("Exhibition.ApprovalExhibitions").
|
||||
Preload("FinancialFrom")
|
||||
|
||||
if in.Type != "" {
|
||||
modelObj = modelObj.Where(&Approval{Type: in.Type})
|
||||
@ -803,6 +810,8 @@ func getApprovalContentFactory(typeFiled string) (ApprovalContentInterface, erro
|
||||
return &BundlePayPrice{}, nil
|
||||
case TypeArtExhibitionReward:
|
||||
return &ExhibitionReward{}, nil
|
||||
case TypeFinancialForm:
|
||||
return &FinancialFrom{}, nil
|
||||
default:
|
||||
return &Approval{}, nil
|
||||
}
|
||||
|
@ -1,6 +1,10 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/fonchain_enterprise/fonchain-approval/api/approval"
|
||||
m2 "github.com/fonchain_enterprise/fonchain-approval/pkg/m"
|
||||
"github.com/jinzhu/copier"
|
||||
"gorm.io/plugin/soft_delete"
|
||||
"time"
|
||||
)
|
||||
@ -10,4 +14,87 @@ type FinancialFrom struct {
|
||||
DeletedAt soft_delete.DeletedAt `gorm:"column:deleted_at" json:"deletedAt"` // 删除时间
|
||||
CreatedAt time.Time `gorm:"column:created_at" json:"createdAt"` // 创建时间
|
||||
UpdatedAt time.Time `gorm:"column:updated_at" json:"updatedAt"`
|
||||
ApprovalID uint64 `gorm:"primaryKey;column:approval_id" json:"approvalId"` // 关联申请的ID
|
||||
PaymentCompany string `json:"paymentCompany" gorm:"column:payment_company;type:varchar(2048);comment:付款公司别"`
|
||||
TransactionDepartment string `json:"transactionDepartment" gorm:"column:transaction_department;type:varchar(255);comment:经办部门"`
|
||||
Payee string `json:"payee" gorm:"column:payee;type:varchar(2048);comment:收款人全称"`
|
||||
BeneficiaryBank string `json:"beneficiaryBank" gorm:"column:beneficiary_bank;type:varchar(1024);comment:收款人开户行"`
|
||||
BankNo string `json:"bankNo" gorm:"column:bank_no;type:varchar(1024);comment:收款人账号"`
|
||||
CostInfo []*CostInfo `json:"costInfo" gorm:"column:cost_info;type:json;comment:费用说明"`
|
||||
PaymentMethod string `json:"paymentMethod" gorm:"column:payment_method;type:varchar(255);comment:付款方式"`
|
||||
InvoiceInfo []*InvoiceInfo `json:"invoiceInfo" gorm:"column:invoice_info;type:json;comment:发票信息"`
|
||||
}
|
||||
|
||||
type CostInfo struct {
|
||||
Description string `json:"description" gorm:"column:description;type:text;comment:说明"`
|
||||
UnitPrice string `json:"unitPrice" gorm:"column:unit_price;type:varchar(255);comment:费用单价"`
|
||||
CostUnit string `json:"costUnit" gorm:"column:cost_unit;type:varchar(255);comment:费用单位"`
|
||||
CostNum int64 `json:"costNum" gorm:"column:cost_num;type:int;comment:费用数量"`
|
||||
TotalPrice string `json:"totalPrice" gorm:"column:total_price;type:varchar(255);comment:费用总额"`
|
||||
UsedDepartment string `json:"usedDepartment" gorm:"column:used_department;type:varchar(2048);comment:使用部门"`
|
||||
}
|
||||
|
||||
type InvoiceInfo struct {
|
||||
InvoiceDate string `json:"invoiceDate" gorm:"column:invoice_date;type:varchar(255);comment:发票日期"`
|
||||
InvoiceNo string `json:"invoiceNo" gorm:"column:invoice_no;type:varchar(255);comment:发票号码"`
|
||||
InvoiceProvider string `json:"invoiceProvider" gorm:"column:invoice_provider;type:varchar(1024);comment:发票提供者"`
|
||||
Amount string `json:"amount" gorm:"column:amount;type:varchar(255);comment:发票或付款金额"`
|
||||
UseTo string `json:"useTo" gorm:"column:use_to;type:varchar(1024);comment:用途"`
|
||||
Applicant string `json:"applicant" gorm:"column:applicant;varchar(255);comment:申请人"`
|
||||
PaymentMethod string `json:"paymentMethod" gorm:"column:payment_method;type:varchar(255);comment:付款方式"`
|
||||
PaymentObj string `json:"paymentObj" gorm:"column:payment_obj;type:varchar(255);comment:付款或报销对象"`
|
||||
InvoiceType string `json:"invoiceType" gorm:"column:invoice_type;type:varchar(255);comment:发票类型"`
|
||||
Notes string `json:"notes" gorm:"column:notes;type:text;comment:备注"`
|
||||
}
|
||||
|
||||
// TableName get sql table name.获取数据库表名
|
||||
func (m *FinancialFrom) TableName() string {
|
||||
return "financial_from"
|
||||
}
|
||||
|
||||
func (m *FinancialFrom) GetApproval(id uint64) (*Approval, error) {
|
||||
|
||||
var entity *Approval
|
||||
if err := DB.
|
||||
Preload("ApprovalWorkFlows").
|
||||
Preload("ApprovalType").
|
||||
Preload("FinancialFrom").
|
||||
First(&entity, id).Error; err != nil {
|
||||
return entity, err
|
||||
}
|
||||
|
||||
return entity, nil
|
||||
}
|
||||
|
||||
func (m *FinancialFrom) SaveApprovalContent(in *approval.CreateRequest, a *Approval) error {
|
||||
|
||||
copier.CopyWithOption(&m, in.FinancialFrom, copier.Option{DeepCopy: true})
|
||||
m.ApprovalID = a.ID
|
||||
|
||||
return DB.Create(&m).Error
|
||||
}
|
||||
|
||||
func (m *FinancialFrom) UpdateApprovalContent(in *approval.CreateRequest, a *Approval) error {
|
||||
|
||||
var entity *FinancialFrom
|
||||
|
||||
if err := DB.Where(&FinancialFrom{ApprovalID: a.ID}).First(&entity).Error; err != nil {
|
||||
return errors.New(m2.ErrorNotFound)
|
||||
}
|
||||
|
||||
copier.CopyWithOption(&m, in.FinancialFrom, copier.Option{DeepCopy: true})
|
||||
m.ID = entity.ID
|
||||
|
||||
return DB.Model(&m).Updates(m).Error
|
||||
}
|
||||
|
||||
func (m *FinancialFrom) BuildResContent(a *Approval, request *approval.CreateRequest) {
|
||||
|
||||
if a.FinancialFrom != nil {
|
||||
copier.CopyWithOption(&request.FinancialFrom, a.FinancialFrom, copier.Option{DeepCopy: true})
|
||||
}
|
||||
}
|
||||
|
||||
func (m *FinancialFrom) DeleteApproval(p *Approval) error {
|
||||
return DB.Where(&FinancialFrom{ApprovalID: p.ID}).Delete(&FinancialFrom{}).Error
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ func migration() {
|
||||
addTable(&ApprovalReward{})
|
||||
|
||||
addTable(&FinancialFormSetting{}) // 财务报表审批 设置信息
|
||||
addTable(&FinancialFrom{}) // 财务报表审批 设置信息
|
||||
|
||||
//增加字段
|
||||
addColumn(&ApprovalType{}, "is_normal")
|
||||
|
@ -13,6 +13,7 @@ func BuildApproval(entity *model.Approval, userId uint64) *approval.CreateReques
|
||||
var exhibition *approval.Exhibition
|
||||
var bundle *approval.Bundle
|
||||
var workFlows []*approval.WorkFlow
|
||||
var financialFrom *approval.FinancialFrom
|
||||
canViewed := false
|
||||
canApproval := false
|
||||
allStatus := uint64(entity.Status)
|
||||
@ -71,6 +72,7 @@ func BuildApproval(entity *model.Approval, userId uint64) *approval.CreateReques
|
||||
Show: show,
|
||||
Exhibition: exhibition,
|
||||
Bundle: bundle,
|
||||
FinancialFrom: financialFrom,
|
||||
CustomizeInfo: BuildKeyInfo(entity.ValueJson),
|
||||
CreatedAt: entity.CreatedAt.Format("2006-01-02 15:04:05"),
|
||||
AllStatus: allStatus, //0-未处理 1-通过 2-拒绝 3-已阅读 4-待阅读
|
||||
|
Loading…
Reference in New Issue
Block a user