package service import ( "aps_crm/model" "aps_crm/model/request" "aps_crm/pkg/ecode" "gorm.io/gorm" ) type InvoiceService struct{} func NewInvoiceService() InvoiceService { return InvoiceService{} } func (InvoiceService) AddInvoice(invoice *model.Invoice) int { err := model.WithTransaction(func(db *gorm.DB) error { err := model.NewInvoiceSearch().Create(invoice) if err != nil { return err } //if invoice.SourceType == constvar.InvoiceSourceTypeServiceContract { // contract,err := model.NewServiceContractSearch().SetId(invoice.SourceId).First() // if err != nil { // return err // } // AmountInvoiced := contract.AmountReceived.Add() // err := model.NewServiceContractSearch().SetId(invoice.SourceId).UpdateByMap(map[string]interface{}{ // "amount_received" : // }) // if err != nil { // return err // } //} return nil }) if err != nil { return ecode.DBErr } return ecode.OK } func (InvoiceService) DeleteInvoice(id int) int { err := model.NewInvoiceSearch().SetId(id).Delete() if err != nil { return ecode.DBErr } return ecode.OK } func (InvoiceService) GetInvoiceList() ([]*model.Invoice, int64, int) { list, total, err := model.NewInvoiceSearch().Find() if err != nil { return nil, 0, ecode.DBErr } return list, total, ecode.OK } func (InvoiceService) UpdateInvoices(Invoices []*request.UpdateInvoice) int { for _, v := range Invoices { // check Invoice exist _, err := model.NewInvoiceSearch().SetId(v.Id).First() if err != nil { return ecode.DBErr } err = model.NewInvoiceSearch().SetId(v.Id).Updates(map[string]interface{}{}) if err != nil { return ecode.DBErr } } return ecode.OK } func (InvoiceService) UpdateInvoice(invoice *model.Invoice) int { err := model.NewInvoiceSearch().SetId(invoice.Id).Save(invoice) if err != nil { return ecode.DBErr } return ecode.OK }