Results 1 to 10 of 10

Thread: Exact Online FireDAC Component en factuurregels toevoegen in Exact Online

  1. #1

    Question Exact Online FireDAC Component en factuurregels toevoegen in Exact Online

    Ik loop tegen iets aan waarmee ik niet verder kom:

    Ik maar gebruik van Delphi Tokyio en Exact Online FireDAC Component, hiermee maak ik verbinding met Exact online, dat werkt perfect.

    Nu wil ik een factuur toevoegen aan Exact Online,
    Code:
      EO_Facturen.SQL.Text:='INSERT INTO CData.ExactOnline.SalesInvoices (Code, id, Name ) VALUES (:SQL_Code, :SQL_Id, :SQL_Name)';
      EO_Facturen.ParamByName('SQL_Code').AsString := s_CustomerCode;
      EO_Facturen.ParamByName('SQL_Id').AsString := s_Id;
      EO_Facturen.ParamByName('SQL_Name').AsString := s_CustomerName;
      EO_Facturen.ExecSQL;
    Dit levert een foutmelding op: [FireDAC][Phys][CData]No invoice lines. Invoice lines must be supplied to create a new invoice. ;

    Dat lees ik ook in de documentatie van Exact: https://support.exactonline.com/comm...-sales-invoice

    Maar hoe krijg ik deze regels toegevoegd?

    Via een extra stuk code met de regel toevoegen erin werkt niet.

    Blijkbaar moet dit in een query? Wie kan me op weg helpen?

  2. #2
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Ik weet niet wat je aan het doen bent, maar je praat tegen een api, die een json verwacht en jij werkt gewoon in een dataset.
    Ik zie nergens communicatie naar de api toe. Er moet dus meer zijn dan alleen deze paar regels.
    Delphi is great. Lazarus is more powerfull

  3. #3
    Quote Originally Posted by jkuiper View Post
    Ik weet niet wat je aan het doen bent, maar je praat tegen een api, die een json verwacht en jij werkt gewoon in een dataset.
    Het gaat natuurlijk niet om de json API versie maar om de FireDac component van Exact Online:
    https://www.cdata.com/drivers/exact/firedac/

    Zijn er geen voorbeelden?

    Zoals de foutmelding al aangeeft verwacht ik dat je eerst item regel(s) aan moet maken en dan in deze INSERT daarnaartoe verwijzen.

  4. #4
    @John: Ik praat niet tegen de JSON API, maar met de FireDac component van Exact Online.

    @RVK: Er is enige documentatie en die werkt. Gevonden op: http://cdn.cdata.com/help/DYD/fire/pg_FIREdml.htm

    The following example executes a parameterized insert:
    RowsAffected := FDConnection1.ExecSQL('insert into Accounts (Name) values (:Name)', ['Jon Doe']);

    Alleen betreft dit het toevoegen van een relatie. Ik heb het toevoegen, wijzigen en verwijderen van een relatie, artikelen werkend op deze manier.

    Maar bij SalesInvoices moet ik 2 zaken tegelijkertijd toevoegen (salesInvoices en SalesInvoiceLines)heb ik het idee, maar ik heb even geen idee hoe dit te doen.

  5. #5
    Ik begrijp ook niet wat je met een customerName doet in die tabel?

    Je hebt daar niets over staan in de tabellen:
    http://cdn.cdata.com/help/DYD/fire/p...voicelines.htm
    http://cdn.cdata.com/help/DYD/fire/p...esinvoices.htm

    Hoe kom jij dan aan die velden Code, id en Name?

    Ergens vind ik het ook raar dat je eerst de SalesInvoiceLines toe zou moeten voegen en daarna pas de SalesInvoice. Maar misschien moet het toch in die volgorde.

    Bepaal dus eerst een InvoiceID en plaats de SalesInvoiceLines en voeg daarna de "main" SalesInvoice record toe.

  6. #6
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Quote Originally Posted by rsjmeijer View Post
    @John: Ik praat niet tegen de JSON API, maar met de FireDac component van Exact Online.
    Sorry. Ik zie net in de link van RvK dat e een speciale componenten set voor gemaakt is. Waarom die naam FireDAC
    Delphi is great. Lazarus is more powerfull

  7. #7
    Waarom die naam FireDAC ?
    Omdat het component zo heet van CData.

  8. #8
    @Rik, ik zie dat ik de documentatie van Exact niet helemaal goed heb geïnterpreteerd. Ik ga de documentatie nog eens goed doornemen, dank voor je hulp zover!

  9. #9
    Via support van CData de oplossing gekregen, daar was ik nooit opgekomen:

    Code:
    INSERT INTO SalesInvoices (OrderedBy, LinkedSalesInvoiceLines) VALUES (:CustomerId, :SalesInvoiceLinesJSON)
    Waar :SalesInvoiceLinesJSON de informatie moet staan voor de artikelregels.

    Dank voor het meedenken!

  10. #10
    Zo, lekker handig. Dan moet je dus met een CData werken (een dataset) voor INSERT en dan moet je nog JSON mee gaan geven

    Kun je bijna net zo goed helemaal in JSON werken

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •