Giter VIP home page Giter VIP logo

api-subiekt-gt's Introduction

PHP REST API dla SubiektGT + SferaGT

API udostępnia interfejs i zapewnia komunikacje z SubiektGT w następujący sposób:

  • tworzenie zamówień od klientów
  • tworzenie klientów
  • tworzenie towarów
  • przetworzenie zamówień klientów na fakturę sprzedaży lub paragon imienny
  • pobranie dowolnego dokumentu
  • pobranie dowolnego dokumentu w formacie pdf
  • pobranie podstawowych danych o kliencie
  • pobranie podstawowych danych o towarze oraz jego stanie magazynowym

Wymagania

Aplikacje, które muszą zostać wcześniej zainstalowane na komputerze/serwerze z Windows:

  • SubiektGT oraz SferaGT (testowano na 1.50 HF1)
  • serwer WWW (testowano na Apache/2.4.27 (Win32))
  • php (testowano na wersji 7.1.9)
  • zainstalowane biblioteki php: com_dotnet, sqlsrv

Instalacja

Pobieramy projekt w wersji master/lub stabilnej lub używamy do tego composer-a. Poniższy przykład przedstawia pobranie wersji developerskiej.

create-project lukeotdr/api-subiekt-gt  --stability dev

Paczkę umieszczamy tak aby serwer www miał możliwość uruchomienia plików PHP z katalogu public lub odpowiednio konfigurujemy serwer www. Uruchamiamy konfigurację api poprzez przykładowe poniższe wywołanie:

http://192.168.1.1/api-subiekt-gt/public/setup

Powyższe wywołanie uruchomi konfigurator api, który pomoże utworzyć plik konfiguracyjny do połączenia ze Sferą GT oraz SQLServer-em. Należy przygotować użytkownika oraz hasło do SQLServera dzięki któremu zostanie nawiązane połączenie z bazą Subiekta. Jeśli była użyta autentykacja windows trzeba utworzyć użytkownika z dostępem do podmiotu. Do testów można użyć danych admina "sa" lecz na produkcji nie zalecane.

Po konfiguracji należy jeszcze przeprowadzić test połączenia podając istniejący numer dokumentu sprzedaży z Subiekta. Np: "PA 13659/12/2017". W odpowiedzi i poprawnego połączenia powinniśmy zobaczyć coś podobnego jak poniżej.

Wysłane rządanie:

192.168.1.1/api-subiekt-gt/public/api/document/get
{
    "api_key": "XXXXXXXXXXXXXXXXXXXXXX",
    "data": {
        "doc_ref": "PA 13659/12/2017"
    }
}

XXXXXXXXXXXXXXXXXXXXXX - wygenerowane api key.

Odebrana odpowiedź:

{
    "state": "success",
    "data": {
        "products": [
            {
                "name": "MUND Skarpety PAMIR r.M czarny",
                "code": "8424752732026",
                "qty": "1.0000",
                "price": "34.9200"
            },
            {
                "name": "ARC'TERYX Woreczek APERTURE CHALK BAG large fiolet",
                "code": "806955782905",
                "qty": "1.0000",
                "price": "62.5700"
            },
            {
                "name": "ARC'TERYX Plecak CIERZO 18 dk basalt",
                "code": "806955927375",
                "qty": "1.0000",
                "price": "175.5200"
            },
            {
                "name": "LIFESYSTEMS Gwizdek ratunkowy SAFETY WHISTLE",
                "code": "5031863022507",
                "qty": "1.0000",
                "price": "27.0600"
            }
        ],
        "fiscal_state": 1,
        "accounting_state": 0,
        "reference": "",
        "comments": "",
        "customer": [],
        "doc_ref": "PA 13659/12/2017",
        "doc_type": "PA",
        "amount": "300.0700",
        "state": 1,
        "date_of_delivery": null,
        "is_exists": true,
        "gt_id": 171417
    }
}

Jeśli udało się połączyć z bazą danych to teraz nie pozostaje nic innego jak utworzyć interfejs do komunikacji z api. Rządania do api w powyższym przykładzie wysyłamy na adres:

http://192.168.1.1/api-subiekt-gt/public/api/

przykładowe wywołanie:

http://192.168.1.1/api-subiekt-gt/public/api/document/get

UWAGA - adres "setup-u" należy zabezpieczyć przed nieautoryzowanym dostępem np przez .htaccess dyrektywy allow deny. Można również przkopiować katalog w inne miejsce.

Gdyby zaszła potrzeba użyć IIS-a jako serwera www to rządania bez modułu "rewrite" miałyby postać:

http://192.168.1.1/api-subiekt-gt/public/api?c=document/get

Dokumentacja API

Dokumentacja metod API: Dokumentacja

License

The MIT License (MIT). Please see License File for more information.

api-subiekt-gt's People

Contributors

lukegpl avatar naturalgroove avatar xlawok avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

api-subiekt-gt's Issues

Pobieranie modelu produktu

W tabeli Towary występuje kolumna "Model", jednak w dokumentacji Sfera Api nie mogę znaleźć żadnych informacji o tym tworze.

Miał ktoś przyjemność pobrać model danego produktu?
Jak to pobrać? Jet może jakaś ogólna metoda, czy lepiej dopisywać swoje SELECTy?

Kredyt kupiecki - rozliczenie VAT

Dzień dobry,
przy dodawaniu FS i wybraniu formy płatności 'credit' Insert rozlicza VAT gotówkowo. Czy da się wymusić by kwota w całości była rozliczana poprzez kredyt kupiecki ? Problem istnieje tylko poprzez API.
Screenshot 2021-09-03 at 11 32 21

Failed to create COM object `InsERT.GT'

Cześć,
problem dotyczy Windows 7 64bit Professional z xampp v3.2.4 z PHP 7.3.
Nie widzi bibioteki Insert.GT

{
    "state": "fail",
    "message": "Failed to create COM object `InsERT.GT': Klasa niezarejestrowana.\r\n",
    "obj_dump": "",
    "data": {
        "doc_ref": "FS 1/09/2019"
    }
}

Nie mam pomysłu gdzie szukać rozwiązania... :/

Problem z odpaleniem na IIS

Witam,
czy jest szansa na pomoc w odpaleniu na serwerze z IIS 10, Tak jak na Xampie działa bez zarzutu to na IIS kończy się błędem
405 - HTTP verb used to access this page is not allowed.
Przeszukałem już kilkanaście stron w poszukiwaniu rozwiązania ale bez skutku, chyba, że nie potrafię korzystać z googla.
Dla Fast CGI
obraz
obraz
oraz dla staticfile jak powyżej.

Serdecznie dziękuję za każdą sugestię.

Produkty powiązane

Cześć, to znowu ja :)
Ogólnie wszystko działa, mam natomiast dość pokaźny problem z produktami które posiadają asortyment powiązany. (dodanie produktu w subiekcie skutkuje automatycznym dodaniem produktu powiązanego).
Zadeklarowana ilość/cena wskakują nie dla produktu głównego, lecz produktu powiązanego.

Jakieś pomysły czy da się coś z tym zrobić?

$this->orderGt = $this->subiektGt->SuDokumentyManager->DodajZK(); - source unknown, description unknown

Cześć Łukasz,

Jak zawsze uderzam do Ciebie...
Teraz spotkałem się z błędem, który w moim lokalnym środowisku nie występuje ale oczywiście w produkcyjnym u klienta się pojawia. Przy próbie dodania zamówienia występuje błąd, który odwołuje się w logach do linijki:
"$this->orderGt = $this->subiektGt->SuDokumentyManager->DodajZK(); " oczywiście opis błędu jak zawsze w Sferze trafia w punkt, tj.source unknown description unknown.

Pozdrawiam i z góry dziękuję
Piotr

adres dostawy

Czy jest szansa na dodanie możliwości ustawienia adresu dostawy za pomocą tego api albo jakieś nakierowanie gdzie to dopisać?

Edycja stanu towaru

Jaki parametr edytuje stan towaru na magazynie? Nie mogę znaleźć w dokumentacji. Czy jest to "qty"? Dokumentacja chyba nie pełna.

problem z połączeniem

  1. Witam, na stronie konfiguracji jaki ma być prawidłowy format adresu serwera bazy bo w opisie pola widnieje "IP/Nazwa serwera z bazą MSSql" a pod spodem w polu placeholder jest "192.168.0.1\sqlserver,1433" i nie wiem czy "/" czy "".

  2. Czy klucz api jest właściwie wykorzystany biorąc pod uwagę, że pole w formularzu nie posiada "name"?

  3. Dodatkowo w Wiki widnieje sekcja "Kontrahenci" i stąd moje pytanie czy są plany dodania tej funkcjonalności, czy po prostu wiki nie uaktualnione?

z góry dzięki za informacje

jak utworzyc zamowienie z usługa a nie z produktem

Witam,

Jak utworzyć zamówienie które w subiekcie będzie widoczne jako usługa? Obecnie działa to tak że dodane zamówienie jest widoczne w subiekcie jako produkt.

Z góry bardzo dziękuje za pomoc.

Pozdrawiam
Marcin Prus

<b>Source:</b> Unknown<br/><b>Description:</b> Unknown

Dzień Dobry,
Co mogłem nie tak skonfigurować ?

W logach pokazuje się poniższy wpis:

2020-12-21 10:25:16 Line: 56, C:\xampp\htdocs\rozliczanie\subiekt\api-subiekt-gt-master\src\apisubiektgt\subiektgt.php: <b>Source:</b> Unknown<br/><b>Description:</b> Unknown

Could not connect.

Witam,
Mam prosbe o pomoc, skonfigurowalem wszystko jak nalezy i podczas proby testu dostaje:
"Could not connect. [Microsoft][ODBC Driver 13 for SQL Server]TCP Provider: Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia.\r\n"
Z innej apki lacze sie spokojnie zapomoca uzytych danych do MSSQL'a - a tutaj ow blad mnie przygniotl.

Bede wdzieczny za pomoc

dokument dla firmy

chyba sie cos zmienilo w strukturze subiekta trudno powiedziec od ktorej wersji bo i nie moge utworzyc dokumentu np ZK dla firmy w kodzie ani w bibliotece nic nie bylo zmieniane
if ($key['code'] == 'nip') {
$customer['is_company'] = true;
$customer['tax_id'] = $key['value'];
} else {
$customer['is_company'] = false;
$customer['tax_id'] = "";
}

problem z nowym dokumentem

Mam problem ze stworzeniem nowego dokumentu być może jakiś polski znak być może co innego

tring(9148) "{ "state": "fail", "message": "Source: Microsoft Cursor EngineDescription: Multiple-step operation generated errors. Check each status value.", "obj_dump": "APISubiektGT\\SubiektGT\\Order Object\n(\n [subiektGt:protected] => variant Object\n (\n )\n\n [is_exists:protected] => \n [gt_id:protected] => \n [cfg:protected] => APISubiektGT\\Config Object\n (\n [server:protected] => 10.0.1.132\n [dbuser:protected] => sa\n [dbpass

Zdjęcia z API

Cześć, próbowałeś rozgryźć pobieranie zdjęć z subiekta i zapisywanie ich do pliku na potrzeby sklepu internetowego?

Zastanawiam się czy lepiej bezpośrednio z bazy danych odkodować czy przez API

"message": "Source: Unknown

Witaj ponownie Łukasz,

Na razie wprost zapuściłem Twoje API ale przy testowaniu konfiguracji dostaję odpowiedź:
"state": "fail",
"message": "Source: Unknown
Description: Unknown",

Masz pomysł na czym może polegać błąd?

faktura z ZK bez NIP

Mam problem chciałem dla pewnych ZK gdzie kupującym jest osoba prywatna bez NIP wystawić fakturę VAT jednak standardowo tworzy się paragon rozumiem ze jedyna metoda to edycja metody makeSaleDoc?

adres dostawy zamówienia.

Łukasz,

Znów potrzebuję Twojej pomocy. Wiesz jak edytować adres dostawy dla zamówienia?
Widzę w dokumentacji atrybuty OdbiorcaId i KontrahentId ale dla adresu dostawy nie znalazłem jakbym chciał wybrać jakiś dostępny adres dostawy lub dodać nowy.

Pozdrawiam

Nie łączy się z subiektem

Cześć, podczas próby instalacji i przetestowania wyrzuca mi w okienku odpowiedzi serwera błąd:

Notice:  Trying to get property 'SuDokumentyManager' of non-object in C:\inetpub\wwwroot\api-subiekt-gt-master\src\apisubiektgt\subiektgt\document.php on line 37



Fatal error:  Uncaught Error: Call to a member function Istnieje() on null in C:\inetpub\wwwroot\api-subiekt-gt-master\src\apisubiektgt\subiektgt\document.php:37
Stack trace:
#0 C:\inetpub\wwwroot\api-subiekt-gt-master\public\api\index.php(77): APISubiektGT\SubiektGT\Document->__construct(NULL, Array)
#1 {main}
  thrown in C:\inetpub\wwwroot\api-subiekt-gt-master\src\apisubiektgt\subiektgt\document.php on line 37

0x80010105 - Serwer wywołał wyjątek

Wyrzuca mi taki błąd:

"message": "Error [0x80010105] Serwer wywołał wyjątek.\r\n",

linia z pliku dokument.php
$this->documentGt = $subiektGt->SuDokumentyManager->Wczytaj($this->doc_ref);

Zmontuj komplet w Sfera - czy możliwa?

Mam w swoim magazynie dużo produktów utworzonych jako komplet który składa się z innych produktów. Czy przez Sferę można kompletować automatycznie takie produkty ? Jeśli nie to czy zapytaniami SQL ? Jeśli tak to jakie są powiązania między produktem a RW, PW które są tworzone podczas montowania kompletu ?

Integracja subiekta z zewnętrzną stroną www

Mamy w firmie aplikacje webowa do wykonywania ofert i chciałbym mieć możliwość wystawiania faktur przez www. Ww skrypt jak rozumiem działa lokalnie, więc jak rozumiem, trzeba by go w jakiś sposób „otworzyć na świat” aby zewnętrzna strona www mogła się z nim łączyć? Druga sprawa to jak wygląda kwestia przerobienia go na subiekt nexo? Dużo zachodu?

nowe pole dla dokumentu sprzedazy c

chcialem dodac mozliwosc dodawania opisu do dokumentu sprzedazy np faktury Opisu dodalem do pliku order.php

$selling_doc->Opis = "testowy opis";

ale zwraca mi blad

"state": "fail", "message": "Unable to lookup `opis': Unknown name", "obj_dump": "APISubiektGT\SubiektGT\Order Object\n(\n [subiektGt:protec

czy powinienem cos jeszcze zdefiniowac najpierw? w dokumentacji sfery jest takie pole

Dokument WZ

Jest możliwość wystawienia dokumentu WZ? Czy jest możliwość dopisania tego modułu?

Zapłacono/Pozostało do zapłaty

Dzień dobry,
przy dodawaniu nowego zamówienia mam pewien problem. Podczas przypisywania wartości brutto przed i po rabacie dostaje dziwne wyniki. Przykład:

  • cena produktu - 0,15
  • ilość - 100

Czyli logicznie wychodzi 15, a w wartości WartoscBruttoPoRabacie oraz WartoscBruttoPrzedRabatem zwraca wartość 14,76.
Wartość przed i po rabacie są takie same.
Chciałem zapytać jaki może być powód? Z góry dziękuję za odpowiedź.

Instalacja.

Czy dobrze rozumiem, że dla integracji API z Subiektem wystarczy, iż Sfera będzie zainstalowana tylko i wyłącznie na stanowisku serwerowym razem z Subiektem?

Wydruk paragonu do faktury

Cześć,
chciałbym zapytać się jak wystawić Fakturę z fiskalizacją ?
Chodzi mi o to że wystawiam fakturę na osobę fizyczną i muszę ją zafiskalizować na drukarce fiskalnej.
Wiem że drukuje dokument Faktura (z NIPem)/Paragon natomiast Faktura+paragon nie jest drukowany. Czy jest jakaś inna metoda która musi to wywołać?
dopisałem w order.php to zaraz po $selling_doc->Zapisz();
$selling_doc->Drukuj();

wydruk FV - drukuj()

Hej koledzy,

nie wiem czy ktoś tu jeszcze zagląda (nota bene bardzo przydatny projekt, dzięki za pracę!) ale może ktoś podpowie.

Czy komenda $selling_doc->Drukuj(); po $selling_doc->Zapisz() powinna w przypadku faktury wydrukować to, co w Subiekcie jest w defaultowym okienku drukowania?
Mam dla FV ustawiony wydruk graficzny (2 kopie) + fiskalizację, wywołanie Drukuj() powoduje fiskalizację, ale nic mi się nie drukuje na laserówkę (wydruk graficzny). Próbowałem w parametrach FV w Subiekcie zmieniać drukarkę (na defaultową z systemu, albo na wybraną na tym stanowisku, na kreatora PDF, itp ), no ale nic mi nie leci. Może macie jakiś pomysł co tu pokombinować?
Ewentualne próby ze znalezionym w issues DrukujWgUstawien($oUstWyd) zakończyły się jeszcze gorzej (nie udało mi się tak zmusić do wydruku, a do tego obiekt faktury w Subiekcie zostaje zablokowany).

Ew. pomyślałem o ściągnięciu PDF faktury i wydrukowaniu jej później - ale tu z kolei odbiłem się na innym problemie - czy metoda /document/getpdf powinna ściągać tylko ZK, czy także inne dokumenty? W dokumentacji jest mowa o "pobraniu zamówienia" ale w sumie wychodzi że to dubel /order/getpdf? Próba wywołania /document/getpdf z podaniem numeru faktury, kończy się u mnie dziwnie - "{ "state": "success", "data": false }".

Dzięki za jakiekolwiek tipy :)

Wybór użytkownika

Można zaktualizować lub podpowiedzieć w jaki sposób można zedytować kod i zdefiniować zapytanie, aby można było wybierać użytkownika subiekta, a nie działać na jednym użytkowniku z konfiguracji Parametrów uruchomieniowych?

Zaokrąglanie cen o grosz

Witam, mam problem podczas dodawania zamówienia za pomocą metody order/add.
Json, którego wysyłam
"products": [ { "code": "xxx", "price": 7.99, "name": "ADAPTER", "qty": "1" },
Jednak produkt ten dodaje sie do zk z zaokrągloną ceną do 8,00.
W niektórych przypadkach cena wynosi równe 15,00 a w subiekcie po dodaniu pojawia się 15,01.

order/add dodaje zk tylko jeśli kontrahent już istnieje w bazie

Witam, dodanie faktury bez istniejącego kontrahenta w bazie kończy się komunikatem sfery:
E:\xampp\htdocs\api-subiekt-gt\src\apisubiektgt\subiektgt\customer.php: <b>Source:</b> Unknown<br/><b>Description:</b> Unknown
Gdy ręcznie dodam kontrahenta z odpowiednim nipem, skrypt nie ma najmniejszego problemu z dodaniem zamówienia jako zk nawet gdy nie podam mu odpowiedniego symbolu kontrahenta.
Proszę o rady.

Uncaught com_exception

Cześć,
Pobrałem skrypt z mastera, skonfigurowałem bazę. Po podaniu nr dokumentu zawsze wyskakiwał status: failed

w pliku \src\apisubiektgt\subiektgt.php dodałem var dumpa na $gt->Uruchom(0,4)

	public function connect(){
		$mssqlConnectionInfo = array("UID" => $this->cfg->getDbUser(),
						  "PWD" => $this->cfg->getDbUserPass(),
						  "Database"=>$this->cfg->getDatabase());
		MSSql::getInstance($mssqlConnectionInfo,$this->cfg->getServer());

		$gt = new COM("InsERT.GT") or die("Cannot create an InsERT GT object");
		$gtD = new COM("InsERT.Dodatki") or die("Cannot create an Insert Dodatki object");

		$gt->Produkt = 1;
		$gt->Autentykacja = 0;




		$gt->Serwer = $this->cfg->getServer();
		$gt->Uzytkownik = $this->cfg->getDbUser();
		$gt->UzytkownikHaslo = $gtD->Szyfruj($this->cfg->getDbUserPass());
		$gt->Baza = $this->cfg->getDatabase();
                 
                var_dump($gt->Uruchom(0,4)).exit;

		 $this->subiektGt = $gt->Uruchom(0,4);

		 return $this->subiektGt;
	}

I wyskakuje błąd:

Fatal error:  Uncaught com_exception: <b>Source:</b> Unknown<br/><b>Description:</b> Unknown in C:\xampp\htdocs\dev\subiekt\src\apisubiektgt\subiektgt.php:52
Stack trace:
#0 C:\xampp\htdocs\dev\subiekt\src\apisubiektgt\subiektgt.php(52): com->Uruchom(0, 4)
#1 C:\xampp\htdocs\dev\subiekt\public\api\index.php(72): APISubiektGT\SubiektGT->connect()
#2 {main}
  thrown in C:\xampp\htdocs\dev\subiekt\src\apisubiektgt\subiektgt.php on line 52

Czy ktoś miał podobny przypadek?

problem z endpointem order/getpdf

Witam,

Mam testową wersję subiekta GT 1.64.

Przez API udaje mi się stworzyć zamówienie oraz je przekształcić na dokument sprzedaży, po tych czynnościach mam order_ref oraz doc_ref.
Gdy próbuję wyciągać pdf w base64 korzystając z endpointa order/getpdf to zwraca mi coś takiego:
Array ( [state] => success [data] => ) czyli status operacji jest pozytywny lecz brak danych. Podobnie mam też dla enpointów order/get, document/getstate, document/get, document/getpdf. Status jest success lecz brak danych.

Nie wiem czy ja coś źle robię czy o czymś nie wiem.
Z góry bardzo dziękuje za pomoc.

Pozdrawiam
Marcin

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.