2010-08-12 21 views
2

G'day,Insertion des transactions de facturation avec Dynamics AX/Axapta Business Connector

OK, je l'ai maintenant réécrite cette question tout à fait:

Je suis en train d'importer des données dans la dynamique grâce à l'utilisation du Business Connector (Idéalement, je l'importerais directement via SQL mais je comprends que ce n'est pas une bonne idée - mais je suis ouvert à d'autres suggestions). Ceci permet d'importer des factures d'un système de production dans Dynamics/Axapta (v5).

Je peux coder pour insérer des données dans la table CUSTINVOICETABLE, qui fonctionne correctement et génère le RECID. Cependant, les nouvelles factures qui viennent d'être insérées existent sans ID de facture (jusqu'à ce qu'elles soient postées, je comprends). Cependant, j'ai besoin d'insérer des éléments de ligne dans la table CUSTINVOICETRANS en tant qu'enfants de l'entrée ci-dessus. Pour cela, vous devez définir le champ INVOICEID pour référencer ce qui précède comme lien vers le parent. Cependant, cela ne semble pas possible avant que la facture ait été validée. Ou je peux être loin de la piste?

Est-ce que quelqu'un a des idées ou peut me faire la lumière? Ce serait très apprécié.

Cordialement, Steve

+1

Etes-vous sûr de devoir insérer dans la table 'CustInvoiceLine' plutôt que' CustInvoiceTrans'? La table 'CustInvoiceLine' est uniquement utilisée dans" Facture texte libre ". –

+0

Bonjour Jan B, pour moi c'est un tâtonnement. J'ai vérifié cela et je me suis demandé comment lier cela au CUSTINVOICETABLE - car cela semble utiliser INVOICEID comme clé parent, mais à ce moment-là je n'ai pas de valeur pour le numéro de facture. Des idées? THX! – MrCraze

+0

Les tables 'CustInvoiceJour' et' CustInvoiceTrans' sont pour les factures, qui par defenition ont déjà été enregistrées. Comme vous ne semblez pas avoir de numéro de facture, ce n'est pas le cas. Pourriez-vous, à un niveau supérieur, décrire ce que vous essayez de faire? Est-ce une commande client? A-t-il été posté ou non? Décrivez vos champs. Est-ce que les lignes ont des numéros d'article? Les lignes ont-elles des informations sur le compte du grand livre? –

Répondre

1

publier une "facture de texte libre" appel simplement custPostInvoiceJob.run() méthode. Vous devrez d'abord créer l'objet, puis appeler une méthode avec votre enregistrement CustInvoiceTable nouvellement créé.

Dans X ++:

custPostInvoiceJob = new CustPostInvoiceJob(); 
custPostInvoiceJob.updateQueryBuild(custInvoiceTable); 
custPostInvoiceJob.run(); 

Vous devrez traduire dans Business Connector appelle dans votre langue préférée.

+0

Bonjour Jan, Je me demandais juste ce que fait la partie 'updateQueryBuild' - c'est un peu ce que j'ai laissé de côté. – MrCraze

+0

Regardez dans le code! Il met à jour sa requête pour sélectionner votre 'custInvoiceTable' uniquement. –

0

Ok, il est en fait aussi facile qu'il devrait être.

Après l'instruction d'insertion, il suffit d'utiliser l'appel get_Field:

axRecord.Insert(); recID = (long) axRecord.get_Field ("RECID");

Vous insérez les éléments de campagne dans la table CUSTINVOICELINE (qui utilise un PARENTRECID), puis lors de la publication, les éléments sont insérés dans la table CUSTINVOICETRANS associée au numéro de facture approprié. Je souhaite que cela évite à quelqu'un de devoir se débrouiller seul.

Steve