Своя организация в настройках (справочник НРД или вручную) вместо зашитого ИНН; ручной ввод: поиск клиента и бумаг в DEPO, одна бумага на поручение

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
zuevav
2026-09-17 19:51:04 +03:00
parent e4de1ab4d8
commit 1d0f904010
17 changed files with 484 additions and 82 deletions
+8 -25
View File
@@ -4,13 +4,11 @@ package lkgateway
import (
"context"
"encoding/json"
"fmt"
"html/template"
"log"
"net/http"
"net/url"
"os"
"strconv"
"strings"
"time"
@@ -53,26 +51,6 @@ func manualActor(w http.ResponseWriter) string {
return "без входа"
}
func manualHandbook() []HandbookEntry {
raw, err := os.ReadFile(handbookFile)
if err != nil {
return nil
}
var hb struct {
Participants []HandbookEntry `json:"participants"`
}
if json.Unmarshal(raw, &hb) != nil {
return nil
}
var out []HandbookEntry
for _, p := range hb.Participants {
if p.Kind != "place" && p.INN != "" {
out = append(out, p)
}
}
return out
}
func registerManual(mux *http.ServeMux, rc *RuntimeConfig, svc *Service) {
tpl, err := template.New("layout.html").Funcs(templateFuncs).ParseFS(templatesFS,
"web/templates/layout.html", "web/templates/admin_manual.html")
@@ -127,12 +105,14 @@ func registerManual(mux *http.ServeMux, rc *RuntimeConfig, svc *Service) {
render(w, tpl, d)
})
registerManualDepo(mux, rc)
mux.HandleFunc("/admin/manual/new", func(w http.ResponseWriter, r *http.Request) {
d := base("Новое поручение")
d.Mode = "edit"
d.O = &ManualOrder{Status: "draft", DocType: "21", SettlePlace: "nrd", PaperDate: time.Now().Format("2006-01-02"),
ReceivedVia: "лично в офисе", Securities: []ManualSec{{}}}
d.Handbook = manualHandbook()
d.Handbook = handbookParticipants()
render(w, tpl, d)
})
@@ -220,10 +200,13 @@ func registerManual(mux *http.ServeMux, rc *RuntimeConfig, svc *Service) {
d.Mode = "print"
}
if o.Status == "draft" {
d.Handbook = manualHandbook()
d.Handbook = handbookParticipants()
d.Problems = manualDataProblems(o)
d.Blockers = manualSendBlockers(rc, o)
d.DepoStale = o.Depo != nil && o.Depo.Hash != o.dataHash()
if len(o.Securities) == 0 { // форма показывает строку бумаги всегда
o.Securities = []ManualSec{{}}
}
}
d.Progress = manualProgressFor(r.Context(), svc, o)
d.Auto = rc.Snapshot().M2MAuto.Enabled
@@ -366,7 +349,7 @@ func manualFromForm(r *http.Request) *ManualOrder {
if o.RecvINN != "" {
o.RecvCode = handbookCodeByINN(o.RecvINN)
if o.RecvName == "" {
for _, p := range manualHandbook() {
for _, p := range handbookParticipants() {
if p.INN == o.RecvINN && (o.RecvCode == "" || p.Code == o.RecvCode) {
o.RecvName = p.Name
break