Documentation
¶
Index ¶
- Constants
- func EnsureCycleValid(u Umker, status *Status, maxAge time.Duration) (*ru_nalog.Doc, error)
- func ParseResponseDoc(b []byte) (*ru_nalog.Doc, error)
- type Document
- type Frame
- type Prop
- type Status
- type Umka
- func (u *Umka) CalcReport() (*ru_nalog.Doc, error)
- func (u *Umka) CycleClose() (*ru_nalog.Doc, error)
- func (u *Umka) CycleOpen() (*ru_nalog.Doc, error)
- func (u *Umka) Danger_CloseFiscalStorage(sessionId string) (*ru_nalog.Doc, error)
- func (u *Umka) FiscalCheck(sessionId string, d *ru_nalog.Doc) (*ru_nalog.Doc, error)
- func (u *Umka) Fiscalize(sessionId string, d *ru_nalog.Doc) (*ru_nalog.Doc, error)
- func (u *Umka) GetDoc(number uint32) (*ru_nalog.Doc, error)
- func (u *Umka) Status() (*Status, error)
- func (u *Umka) XReport() (*ru_nalog.Doc, error)
- type UmkaConfig
- type Umker
Constants ¶
View Source
const TimeLayout = "02 Jan 2006 15:04:05 -0700"
RFC822Z +century,seconds or RFC1123Z -dayofweek
Variables ¶
This section is empty.
Functions ¶
func EnsureCycleValid ¶
Types ¶
type Frame ¶
type Frame struct {
Protocol int `json:"protocol,omitempty"` // 1=JSON 3=XML
Version string `json:"version,omitempty"` // "1.0"
CashboxStatus *Status `json:"cashboxStatus,omitempty"`
Document *Document `json:"document,omitempty"`
}
Request/response container for marshalling
type Status ¶
type Status struct {
AgentFlags byte `json:"agentFlags" fdn:"1057"`
AllowGames bool `json:"allowGames" fdn:"1193"`
AllowLotteries bool `json:"allowLotteries" fdn:"1126"`
AllowServices bool `json:"allowServices" fdn:"1109"`
AtmNumber string `json:"atmNumber" fdn:"1036"`
AutomatMode bool `json:"automatMode" fdn:"1001"`
Cash uint64 `json:"cash"`
CashBoxNumber uint32 `json:"cashBoxNumber"` // номер ккм в зале
Cashier uint32 `json:"cashier"` // номер кассира (в текущем режиме)
CycleNumber uint32 `json:"cycleNumber" fdn:"1038"`
CycleOpened string `json:"cycleOpened"` // дата/время открытия смены в кассе (текущей или последней закрытой) если смен не было — не передается
CycleClosed string `json:"cycleClosed"` // дата/время закрытия последней смены в кассе если смена открыта — не передается
Dt string `json:"dt"` // дата/время сейчас в кассе
Email string `json:"email"`
ExcisableGoods bool `json:"excisableGoods" fdn:"1207"`
ExternPrinter bool `json:"externPrinter" fdn:"1221"`
FSFDFVersion byte `json:"fSFDFVersion" fdn:"1190"` // версия ФФД ФН — из текущих данных фискализации (1 — 1.0, 2 — 1.05, 3 — 1.1 (см ФФД))
FDFVersion byte `json:"fDFVersion"` // версия ФФД ККТ — из текущих данных фискализации (1 — 1.0, 2 — 1.05, 3 — 1.1 (см ФФД))
Flags byte `json:"flags"` // Флаги состояния ККМ( ПРИЛОЖЕНИЕ 3)
FnsSite string `json:"fnsSite" fdn:"1060"`
FsNumber string `json:"fsNumber" fdn:"1041"` // Номер ФН, с которым была фискализована касса
FsStatus struct {
CycleIsOpen byte `json:"cycleIsOpen"`
DebugMode bool `json:"debugMode"`
FsNumber string `json:"fsNumber"`
FsVersion string `json:"fsVersion"`
LastDocDt string `json:"lastDocDt"`
LastDocNumber uint64 `json:"lastDocNumber"`
LifeTime struct {
AvailableRegistrations uint32 `json:"availableRegistrations"`
CompletedRegistrations uint32 `json:"completedRegistrations"`
ExpirationDt string `json:"expirationDt"` // "2020-07-20"
} `json:"lifeTime"`
Phase byte `json:"phase"`
Transport struct {
DocIsReading bool `json:"docIsReading"`
FirstDocDt string `json:"firstDocDt"`
FirstDocNumber uint64 `json:"firstDocNumber" fdn:"1116"`
OfflineDocsCount uint32 `json:"offlineDocsCount" fdn:"1097"`
State uint32 `json:"state"` // Состояние обмена с ОФД ( ПРИЛОЖЕНИЕ 5)
} `json:"transport"`
} `json:"fsStatus"`
InternetOnly bool `json:"internetOnly" fdn:"1108"`
Introductions uint32 `json:"introductions"`
IntroductionsSum uint64 `json:"introductionsSum"`
MakeBso bool `json:"makeBso"`
Model uint16 `json:"model"`
Modelstr string `json:"modelstr"` // "УМКА-01-ФА"
OfdInn string `json:"ofdInn" fdn:"1017"`
OfdName string `json:"ofdName" fdn:"1046"`
OfflineMode bool `json:"offlineMode"`
PaymentAddress string `json:"paymentAddress" fdn:"1009"` // "г. Воронеж, ул. Липецкая, д.3"
PaymentPlace string `json:"paymentPlace" fdn:"1187"` // "ОФИС1"
Payouts uint32 `json:"payouts"`
PayoutsSum uint64 `json:"payoutsSum"`
RegCashierInn string `json:"regCashierInn"` // "000000000000"
RegCashierName string `json:"regCashierName"` // "CASHIER 17"
RegDate string `json:"regDate"` // дата фискализации "2006-01-02"
RegDocNumber uint64 `json:"regDocNumber"` // 1
RegNumber string `json:"regNumber" fdn:"1037"` // "0000000001020321"
ShortFlags uint32 `json:"shortFlags"` // 3
Taxes uint32 `json:"taxes" fdn:"1055"` // 15
UseEncryption bool `json:"useEncryption" fdn:"1056"` // false
UserInn string `json:"userInn" fdn:"1018"` // "7725225244"
UserName string `json:"userName" fdn:"1048"` // "ООО ВЕКТОР-М"
Serial string `json:"serial" fdn:"1013"` // "16999987"
Mode string
XXX_Mode uint32 `json:"mode"` // 0:choice 1:reg 2:x-report 3:z-report 4:prog 5:serial 6:fstore 7:aux
XXX_SubMode uint32 `json:"subMode"` //
XXX_Ver uint32 `json:"ver"`
XXX_Subver uint32 `json:"subver"`
}
func (*Status) CycleAge ¶
Duration of open cycle (if >= 0) or since last closed cycle (if < 0) relative to `s.Dt` Returns -1,nil if no cycles were opened yet (new fiscal storage). Intended usage: if age, err := status.CycleAge(); err != nil { return err } else if age < 0 { u.CycleOpen() } else if age >= 24*Hour { u.CycleClose() ; u.CycleOpen() }
func (*Status) FsExpireDate ¶
func (*Status) IsCycleOpen ¶
func (*Status) OfdOfflineCount ¶
type Umka ¶
type Umka struct {
// contains filtered or unexported fields
}
func (*Umka) Danger_CloseFiscalStorage ¶
func (*Umka) FiscalCheck ¶
type UmkaConfig ¶
type UmkaConfig struct {
BaseURL string
SecretFun func() (string, string)
RT http.RoundTripper
}
type Umker ¶
type Umker interface {
CalcReport() (*ru_nalog.Doc, error)
CycleClose() (*ru_nalog.Doc, error)
CycleOpen() (*ru_nalog.Doc, error)
Danger_CloseFiscalStorage(sessionId string) (*ru_nalog.Doc, error)
FiscalCheck(sessionId string, d *ru_nalog.Doc) (*ru_nalog.Doc, error)
Fiscalize(sessionId string, d *ru_nalog.Doc) (*ru_nalog.Doc, error)
GetDoc(number uint32) (*ru_nalog.Doc, error)
Status() (*Status, error)
XReport() (*ru_nalog.Doc, error)
}
func NewUmka ¶
func NewUmka(config *UmkaConfig) (Umker, error)
Click to show internal directories.
Click to hide internal directories.