Osbługa kasy fiskalnej w standardzie POSTNET
Obiekty bazy danych
[log].[communication_log]- historia komunikacji
[document].[invoice_fiscalStatusUpdate] - zmaina statuu wydrukowany
[document].[fiscalize_getPrintXml] - generowanie xml (trzeba bedzie sprawdzic tutaj czy jest tax)
[log].[communication_log_check] - procedura która jest uruchamiana przez usługe selfprinted do sprawdzania nowych pozycji
jeśli jest wpis [log].[communication_log_insertUpdate]
Możliwość awaryjnego wydrukowania ponownie paragonu
Z poziomu systemu uprawnienie invoice_cancelFiscalPrinted
z poziomu bazy danych
SQL --Pozwolenie na wydrukowanie jeszcze raz
UPDATE document . invoice SET fiscalPrintUtcDate = null where invoiceID = @ invoiceID and fiscalPrintUtcDate is not null ;
SQL --wyslanie istniejacego requestu ponownie do drukarki
update [ log ]. communication_log set response = null , exceptionmessage = null where logID = '97DF2CF2-94BD-E811-841B-7ED30A52F64F'
select exceptionmessage , response , responsexml from [ log ]. communication_log where logID = '97DF2CF2-94BD-E811-841B-7ED30A52F64F'
SQL --przykłądowae zapytani
select top 100 * from [ log ]. communication_log order by adddate desc
Diagnostyka
Zdarza się problem z wydrukiem. Zwykle pomaga modyfikacja nazwy pozycji na paragonie w xml [log].communication_log
nic się nie drukuje checklista
na komputerze klienta do którego jest przypięta drukarka jest zainstalowany program,
XML <?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version= "v4.0" sku= ".NETFramework,Version=v4.5.2" />
</startup>
<connectionStrings>
<!--<add name="baseAddress" connectionString="http://fiscalprinterapi:9000/"/>-->
</connectionStrings>
<appSettings>
<add key= "mode" value= "PULL" />
<add key= "askForRequestFullPath" value= "https://lisicki.platformacrm.pl/views/application/fiscalizeGetFirstRequestFromTheQueue" />
<add key= "sendResponseFullPath" value= "https://lisicki.platformacrm.pl/views/application/fiscalizeUpdateStatus" />
<add key= "pauseInterval" value= "5000" />
<add key= "clientID" value= "db6c4153-3ca0-4922-b435-d9ff00534ae5" />
<add key= "functionName" value= "fiscalPrinter: LISICKI RAWA" />
</appSettings>
</configuration>
Nip na paragonie
Lisicki uzywa posnet thermal
Przykład
XML <root>
<factoryIdent> Lisicki.Rawa.Mazowiecka</factoryIdent>
<fiscalPrinterFactory> POSNETTHERMAL5</fiscalPrinterFactory>
<portName> COM1</portName>
<protocolOptions> 0</protocolOptions>
<mode> OFFLINE</mode>
<documentId> E0E6C91C-FD35-EA11-8427-7ED30A52F64F</documentId>
<number> P00005/20 NIP:</number>
<documentType> bill</documentType>
<lines>
<line position= "1" >
<name> PLATFORMA SADOWNICZA ZACZEPIANA T031</name>
<quantity> 1.0000</quantity>
<grossPrice> 13500.00</grossPrice>
<grossValue> 13500.00</grossValue>
<vatRateType> A</vatRateType>
</line>
</lines>
<grossValue> 13500.00</grossValue>
</root>
Najczęstsze błędy
Brak zapisu w tabeli [log].[communication_log]
należy nacisnąć przycisk drukuj PA w interfejsie
przycisk jest widoczny tylko jesli data dokumentu jest zgodna z datą bieżącą.
Awaryjnie można dodać wpis do log.communication_log kopiujac ostatni wpis
- insert into select bez guid i ze zmienionym remote id na id dokumentu
- update z ręczną edycja request i requestXML
- w celu wysłania requestu zerujemy wartosść response:SQL update [ log ]. communication_log set response = null , exceptionmessage = null where logID = '61C82E13-954E-EB11-843B-7ED30A52F64F'
Paragon sie wydrukował ale jest bład "Błąd Interfejsu"
Prawdopodobnie jest problem z xml, xml jest zapisany w
[log].communication_log.request i [log].communication_log.requestXml
Przykłady :
usunąć niestandardowe znaki
niewłaściwa kolejność pozycji
coś jest nei tak z polem tax np zła długość mozna ustawić też na <tax>0000000000</tax>
Paragon nie chce sie wydrukować. Błąd #NR4_DATAERROR
Przypadek z niewłaściwa kolejnością pozycji w xml. Rozwiązane za pomoca update:
SQL declare @ xml xml = '<root>
<factoryIdent>Lisicki.Rawa.Mazowiecka</factoryIdent>
<fiscalPrinterFactory>POSNETTHERMAL5</fiscalPrinterFactory>
<portName>COM1</portName>
<protocolOptions>0</protocolOptions>
<mode>OFFLINE</mode>
<documentId>250D3A74-60C8-EB11-843F-7ED30A52F64F</documentId>
<number>P00131/21</number>
<tax />
<documentType>bill</documentType>
<lines>
<line position="1">
<name>NÓŻ ROZDRABINACZA</name>
<quantity>4.0000</quantity>
<grossPrice>43.00</grossPrice>
<grossValue>172.00</grossValue>
<vatRateType>A</vatRateType>
</line>
<line position="2">
<name>USŁUGA KURIERSKA STD</name>
<quantity>1.0000</quantity>
<grossPrice>30.00</grossPrice>
<grossValue>30.00</grossValue>
<vatRateType>A</vatRateType>
</line>
</lines>
<grossValue>202.00</grossValue>
</root>'
update [ log ]. communication_log set
requestXml =@ xml ,
request = cast ( @ xml as nvarchar ( max )),
exceptionMessage = null ,
response = null
where logID = '7A7EC892-60C8-EB11-843F-7ED30A52F64F'
```
## Nowy uzytkownik konfiguracja drukarki
Uzytkownik musi miec wartosc ` [ user ].[ user ]. fiscalPrinterEndpoint `
np LISICKI RAWA
``` sql
SELECT fiscalPrinterEndpoint FROM [ user ].[ user ] WHERE username =@ 0
select * from common . configuration where configurationid = 'instance.fiscalPrinterEndpoint[NAZWA drukarki z profilu].config'
instance.fiscalPrinterEndpoint[{0}].config
Przykladowa konfiguracja instance.fiscalPrinterEndpoint[LISICKI RAWA].config
XML <factoryIdent> <![CDATA[Lisicki.Rawa.Mazowiecka]]> </factoryIdent>
<fiscalPrinterFactory> POSNETTHERMAL5</fiscalPrinterFactory>
<portName> COM1</portName>
<protocolOptions> 0</protocolOptions>
<mode> OFFLINE</mode>