41 lines
1.0 KiB
Go
41 lines
1.0 KiB
Go
package model
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
type ReportPosition struct {
|
|
ID uint `gorm:"primary_key"`
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
PositionNumber int
|
|
Quantity int
|
|
ProductExpiryPosition ProductExpiryPosition
|
|
ProductExpiryPositionID uint
|
|
ReportID uint
|
|
}
|
|
|
|
func (reportPosition *ReportPosition) CreateOrUpdate() (*ReportPosition) {
|
|
|
|
GetDB().Save(reportPosition)
|
|
|
|
return reportPosition;
|
|
}
|
|
|
|
func GetReportPositionsForReport(reportID uint) ([]*ReportPosition) {
|
|
|
|
reportsPositions := make([]*ReportPosition, 0)
|
|
|
|
if GetDB().
|
|
Joins("JOIN reports on reports.id = report_positions.report_id").
|
|
Joins("JOIN product_expiry_positions on product_expiry_positions.id = report_positions.product_expiry_position_id").
|
|
Joins("JOIN products on products.id = product_expiry_positions.product_id").
|
|
Joins("JOIN companies on companies.id = products.company_id").
|
|
Where("reports.id = ?", reportID).
|
|
Group("product_expiry_positions.id").
|
|
Find(&reportsPositions).RecordNotFound() {
|
|
return nil
|
|
}
|
|
|
|
return reportsPositions
|
|
} |