revert to one line per doc

This commit is contained in:
Maxim Dolgushin 2023-10-14 10:56:03 +07:00
parent a1f1da6d6d
commit d85e8ff7d8
3 changed files with 26 additions and 75 deletions

Binary file not shown.

@ -33,65 +33,22 @@ type RespGenerated struct {
// the request we get on GeneratorService endpoint // the request we get on GeneratorService endpoint
type ReqGeneratorService struct { type ReqGeneratorService struct {
DocNumber string `json:"docnumber"` DocNumber string `json:"docnumber"`
Date string `json:"date"` Date string `json:"date"`
OrgTaxNum string `json:"orgtaxnum"` OrgTaxNum string `json:"orgtaxnum"`
OrgName string `json:"orgname"` OrgName string `json:"orgname"`
Sum string `json:"sum"` Name string `json:"name"`
Goods []ReqGeneratorServiceItem `json:"goods"` Amount string `json:"amount"`
Price string `json:"price"`
Sum string `json:"sum"`
Unit string `json:"unit"` // default value set in NewReqGeneratorService()
Tax string `json:"tax"` // default value set in NewReqGeneratorService()
} }
type ReqGeneratorServiceItem struct { func NewReqGeneratorService() ReqGeneratorService {
Name string `json:"name"` return ReqGeneratorService{
Amount string `json:"amount"` Tax: "НДС не облагается",
Price string `json:"price"` Unit: "-",
Sum string `json:"sum"`
}
// Must be kept in sync with the actual number of rows in docx
const ReqGeneratorServiceTemplateRows = 4
type ReqGeneratorServiceTemplateData struct {
DocNumber string
Date string
OrgTaxNum string
OrgName string
Sum string
X []ReqGeneratorServiceTemplateDataItem // single letter to produce less noise inside template
}
type ReqGeneratorServiceTemplateDataItem struct {
Name string
Amount string
Price string
Sum string
Nds string
Unit string
}
func (r ReqGeneratorService) TemplateData() ReqGeneratorServiceTemplateData {
xs := make([]ReqGeneratorServiceTemplateDataItem, ReqGeneratorServiceTemplateRows)
for i, v := range r.Goods {
xs[i] = ReqGeneratorServiceTemplateDataItem{
Name: v.Name,
Amount: v.Amount,
Price: v.Price,
Sum: v.Sum,
Nds: "НДС не облагается",
Unit: "-",
}
}
for i := len(r.Goods); i < ReqGeneratorServiceTemplateRows; i++ {
xs[i] = ReqGeneratorServiceTemplateDataItem{}
}
return ReqGeneratorServiceTemplateData{
DocNumber: r.DocNumber,
Date: r.Date,
OrgTaxNum: r.OrgTaxNum,
OrgName: r.OrgName,
Sum: r.Sum,
X: xs,
} }
} }

@ -16,20 +16,18 @@ func TestGeneratorService(t *testing.T) {
t.Error(err) t.Error(err)
} }
r := ReqGeneratorService{ data := NewReqGeneratorService()
DocNumber: "2",
Date: "13.05.2021",
OrgName: `ООО ЛИГА ХОДЬБЫ "ЖЕНЬШЕНЬ" ПРИМОРСКОГО КРАЯ`,
OrgTaxNum: "999888111",
Sum: "60 000 руб.",
Goods: []ReqGeneratorServiceItem{
{"Консультационные услуги", "2", "1500", "3000"},
{"Развлекательные услуги", "1", "500", "500"},
{"Информационные услуги", "10", "1000", "10000"},
},
}
data := r.TemplateData() // is filled by json.Unmarshal
data.DocNumber = "2"
data.Date = "13.05.2021"
data.OrgName = `ООО ЛИГА ХОДЬБЫ "ЖЕНЬШЕНЬ" ПРИМОРСКОГО КРАЯ`
data.OrgTaxNum = "999888111"
data.Sum = "60 000 руб."
data.Name = "Консультационные услуги"
data.Amount = "2"
data.Price = "1500"
data.Sum = "3000"
resultBytes, err := templategen.GenerateBytesFile(file, data) resultBytes, err := templategen.GenerateBytesFile(file, data)
if err != nil { if err != nil {
@ -42,7 +40,7 @@ func TestGeneratorService(t *testing.T) {
t.Error(err) t.Error(err)
} }
// _ = os.WriteFile("/tmp/out2.docx", resultBytes, 0644) // TODO delete // _ = os.WriteFile("/tmp/out3.docx", resultBytes, 0644) // TODO delete
checkAllFieldsPresent(t, document.GetContent(), data) checkAllFieldsPresent(t, document.GetContent(), data)
} }
@ -61,10 +59,6 @@ func checkAllFieldsPresent(t *testing.T, content string, data interface{}) {
if !strings.Contains(content, x) { if !strings.Contains(content, x) {
t.Errorf("missing value for '%s': '%s'", fieldName, x) t.Errorf("missing value for '%s': '%s'", fieldName, x)
} }
case []ReqGeneratorServiceTemplateDataItem:
for _, item := range x {
checkAllFieldsPresent(t, content, item)
}
default: default:
t.Error("unhandled field") t.Error("unhandled field")
} }