Skip to content

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
1
2
3
4
--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,
    • musi byc uruchomiony (nazwa fiscalprintedselfhosted)
    • Należy zweryfikować czy np konfiguracja sieciowa się nie zmieniła konfiguracja wygląda w ten sposób w przypadku lisickiego przykład poniżej, konfiguracja jest na komputerze pani Doroty w katalogu fiscalprintedselfhosted zwykle na c
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
1
2
3
4
5
<factoryIdent><![CDATA[Lisicki.Rawa.Mazowiecka]]></factoryIdent>
<fiscalPrinterFactory>POSNETTHERMAL5</fiscalPrinterFactory>
<portName>COM1</portName>
<protocolOptions>0</protocolOptions>
<mode>OFFLINE</mode>