Chyba synchronizace objednávky, když není zadána společnost

Popis

Při vložení objednávky, která nemá vyplněnou společnost, do eWay-CRM® a odeslání přes workflow do Pohody, dojde k chybě synchronizace. V logu je uvedena následující chyba:

HASH: 54BAF74BA4519B9861462D1325505FB1
Synchronization failed
eWay.Core.Exceptions.StoreException: Uploading of items failed. ---> eWay.Core.Exceptions.StoreException: Cannot save items to webservice to folder 'Relations' ---> eWay.Core.Exceptions.eWayWebServiceException: Web service returned an error (rcGeneralError): Problem executing trigger 'eWay.WebService.Triggers.PohodaSync.SynchronizeItemsToPohodaTrigger' on item '32c0ad19-c669-11e5-9d63-8cef4587255d'. Details: Unable to import item '11d12023-c669-11e5-9d63-8cef4587255d' from folder 'Carts' to Pohoda: This element is required for creating of document: error=108, xpath=dat:dataPack/dat:dataPackItem[1]/ord:order/ord:orderHeader/ord:partnerIdentity, valuRequested=, valueProduced=
at eWay.Core.WebService.BasicItemStore.SaveItems(OutlookItem[] items) in c:\CC.NET\Projects\NAnt\Sources\eWayLibrary\eWayShared\WebService\BasicItemStore.cs:line 176
at eWay.Core.WSDataInterface.eWayItemStore.SaveItems(OutlookItem[] items) in c:\CC.NET\Projects\NAnt\Sources\eWayLibrary\eWayWSDataInterface\eWayItemStore.cs:line 422
--- End of inner exception stack trace ---
at eWay.Core.WSDataInterface.eWayItemStore.SaveItems(OutlookItem[] items) in c:\CC.NET\Projects\NAnt\Sources\eWayLibrary\eWayWSDataInterface\eWayItemStore.cs:line 438
at eWay.Core.WebService.BasicItemStore.SaveItem(OutlookItem item) in c:\CC.NET\Projects\NAnt\Sources\eWayLibrary\eWayShared\WebService\BasicItemStore.cs:line 159
at eWay.Core.CachedDataInterface.CachedItemStore.SaveLocalItemToRemoteStore(Application application, SynchronizationItem synchronizationSetting, OutlookItem localItem) in c:\CC.NET\Projects\NAnt\Sources\eWayLibrary\CachedDataInterface\CachedItemStore.cs:line 1112
at eWay.Core.CachedDataInterface.CachedItemStore.UploadItem(Application application, ItemVersion item, Boolean remove) in c:\CC.NET\Projects\NAnt\Sources\eWayLibrary\CachedDataInterface\CachedItemStore.cs:line 1242
--- End of inner exception stack trace ---
at eWay.Core.CachedDataInterface.CachedItemStore.UploadItem(Application application, ItemVersion item, Boolean remove) in c:\CC.NET\Projects\NAnt\Sources\eWayLibrary\CachedDataInterface\CachedItemStore.cs:line 1252
at eWay.StandardEdition.Synchronization.SynchronizeThread.<>c__DisplayClass4.<UploadItem>b__3() in c:\CC.NET\Projects\NAnt\Sources\eWayLibrary\eWaySynchronization\SynchronizeThread.cs:line 1002
at eWay.Core.Data.TransactionRepeater.RunInTransaction(Func`1 transactionCommands, Boolean allowBulkInsert) in c:\CC.NET\Projects\NAnt\Sources\eWayLibrary\eWayShared\Data\TransactionRepeater.cs:line 96
at eWay.StandardEdition.Synchronization.SynchronizeThread.UploadItem(Boolean& synchronizationOK, Boolean& newData, DateTime till, Application outlookApplication) in c:\CC.NET\Projects\NAnt\Sources\eWayLibrary\eWaySynchronization\SynchronizeThread.cs:line 992
at eWay.StandardEdition.Synchronization.SynchronizeThread.TryUploadItem(Boolean& synchronizationOK, Boolean& newData, DateTime start, Application outlookApplication) in c:\CC.NET\Projects\NAnt\Sources\eWayLibrary\eWaySynchronization\SynchronizeThread.cs:line 974
at eWay.StandardEdition.Synchronization.SynchronizeThread.UploadItems(Boolean& synchronizationOK, Boolean& newData, List`1 lastUploadedItems) in c:\CC.NET\Projects\NAnt\Sources\eWayLibrary\eWaySynchronization\SynchronizeThread.cs:line 847
--- END TRACE ---

V logu Pohody se pak objevuje následující chyba:

<rdc:detail>
<rdc:state>error</rdc:state>
<rdc:errno>108</rdc:errno>
<rdc:note>Tento element je vyžadován pro vytvoření dokladu</rdc:note>
<rdc:XPath>dat:dataPack/dat:dataPackItem[1]/ord:order/ord:orderHeader/ord:partnerIdentity</rdc:XPath>
</rdc:detail>

Verze

Všechny verze eWay-CRM®

Obtížnost řešení

Střední

Postup řešení

Jedná se o chybu, která vznikla ve chvíli, kdy měl být doklad synchronizován do Pohody bez toho, aby byla vyplněna společnost. V případě objednávky se jedná o povinné pole. Před synchronizací je nutné mít u objednávky vyplněnou společnost.

Varianta 1: Okamžité řešení

Chybu lze napravit jednoduše smazáním přijaté objednávky ze serveru, nejlépe procedurou eWaySP_DeleteCart. Po smazání objednávky je možné vytvořit novou a po vyplnění společnosti se provede správná synchronizace.

V případě, kdy chcete data zachovat, je možné doplnit společnost přes databázi (doklad je na lokální stanici již zamčený).

Varianta 2: Dlouhodobé řešení

Aby uživatelé nezapomínali na to, že je společnost u objednávky potřeba vyplnit, vytvoří se workflow akce, která zkontroluje, zda je při přechodu do daného stavu pole Odběratel vyplněno.

Pole odběratel je možné nastavit jako povinnou položku pro všechny doklady anebo pouze pro konkrétní typy dokladu - záleží na preferenci klienta.