Karat nezajímají polotovary, ale pouze výrobky na úrovni svazek.
Vzhledem ke složitější struktuře vyráběného zboží z toho vyplývá, budeme muset identifikovat svazky ve stromu zboží, případně musíme určit, že ve stromu žádný svazek není a tedy výrobek je nejvrchnější sestava - zboží na objednávce.
Výrobky identifikujeme podle pravidel:
Hodnota práce, kooperací a spotřebovaného materiálu se odvádí na položku projektové objednávky (DOP). V tomto kontextu, lze považovat DOP = zakázka.
Účetně, se tyto skutečné náklady účtují na nedokončenou výrobu 121.
Při naskladnění výrobku z výroby si Karat z Factorify vezme odhadovanou hodnotu výrobku v rozpadu dle kalkulačního vzorce EGE a tuto hodnotu přeúčtuje z nedokončené výroby (NV) 121 na výrobky 123.
Rozpadem dle kalk. vzorce je myšlena stejná úroveň detailu, jako je v současnosti pro IFS.
V případě, že odhad. bude větší než náklady, které napadaly do NV 121, "půjde NV do záporu". Tento nesoulad se opraví v okamžiku uzavření zakázky.
Pokud se zjistí, že je odhadovaná cena diametrálně odlišná od reality, technologové zboží přecení (opraví WF) a Karat přecení pohyby.
EGE plánuje používat ceny z výrobních postupů pro naceňování zakázek. Současné naceňování podle hmotnosti není zcela vyhovující.
Po expedici a při uzavření zakázky se výrobky ocení skutečnou cenou, za kterou se vyskladní a opraví se rozdíl mezi odhadem a skutečnou cenou na NV 121 a výrobcích 123.
V Karatu nebude známá skutečná cena svazku, pouze skutečná cena DOP.
API je chráněné pomocí basic access authentication.
Pro komunikaci ve formátu JSON je potřeba nastavit hlavičku Accept.
Accept: application/jsonVšechny entity obsahují následující pole, kromě výjimek uvedených u každé entity.
id - celočíselný, primární, unikátní identifikátor entity.createdAt - čas vytvoření.updatedAt - čas aktualizace.deleted - záznam je smazaný a ve Factorify existuje kvůli zachování integrity dat.Pole, jejichž hodnoty se můžou změnit od okamžiku vzniku záznamu jsou zvýrazněná kurzívou.
Pole updatedSinceTimestamp je Epoch time v mili nebo micro sekundách. Pokud není uvedený, vezme se od počátku Epochy.
Předpoklad: Karat nepotřebuje znát výrobní neshodnosti.
Předpoklad: Karat nepotřebuje znát detaily výrobních dávek (opravné dávky, rozdělení, atp.) a vlastně ani dávky samotné. Jediný účel dávek by byl: identifikace DOP.
Endpoint je vhodný pro ověření funkčnosti připojení na Factorify.
GET /karat/status
Status
buildTime - čas sestavení aplikace Factorify.upTime - čas od kterého je Factorify spuštěno.GET /karat/people/{updatedSinceTimestamp}
Person
titleBeforefirstnamelastnametitleAftercostCenter - nákladové střediskopeopleNote - volný atribut PEOPLE_NOTEexternalIdGET /karat/companies/{updatedSinceTimestamp}
POST /karat/company/ - pokud není vyplněné id, záznam se vytvoří.
Company
nameexternalId - identifikátor společnosti v externím systémucurrency - ISO 4217types: set of {TRANSPORTER, CONTRACTOR, SUPPLIER, CUSTOMER}state: {NEW, ACTIVE, DELETED}GET /karat/addresses/{updatedSinceTimestamp}
POST /karat/address/ - pokud není vyplněné id, záznam se vytvoří.
Address
personIdcompanyIdisDefaulttype: {BILLING_ADDRESS, DELIVERY_ADDRESS, HIDDEN_ADDRESS, TEMPORARY_RESIDENCE, DOMICILE}nameaddressLine1addressLine2addressLine3cityzipcountry - ISO 3166-2vatNo - DIČvatClassificationstateIdentNo - IČEndpoint vrátí materiály, výrobky, případně neskladové zboží.
Produkt v terminologii EGE-Karatu je zboží na prodejní objednávce:
Tato logika je naimplementovaná ve view karat_dop_products_v.
Vzhledem ke komplikovanosti určení zda-li je zboží produkt v okamžiku jeho vzniku, tento endpoint vrátí všechno zboží ve Factorify.
GET /karat/goods-list/{updatedSinceTimestamp}
Goods
state: {NEW, FIRST_RUN, ACTIVE, DELETED}classification: {MATERIAL, PART, PRODUCT, GOODS}codenameunit - množstevní jednotka.nonStock - boolean, true pokud je neskladové zboží (např. služba)type - klíčové slovo zbožícustomsIntrastatNumber - celní nomenklaturahsCode - celní nomenklaturaEndpoint vrátí záznamy práce na úkolech (např. konstrukce).
GET /karat/task-evidence-list/{updatedSinceTimestamp}
TaskWorkLog
projectOrderItemIdtaskId - id úkolutaskTitle - název úkolucostCenter - 4231000 = konstrukce, 4232000 = technologové, 4234000 = engineeringdateOfWork - datum záznamu prácepersonId - zaměstnanecstageId - pracovištědurationMinutesU výroby poltovarů, které mají ve Factorify nastavený parametr "zaměnitelné dávky" se může postupovat tak, že pro jednu DOP se vytvoří pouze jedna výrobní dávka takového polotovaru i přesto, že polotovar bude použit ve více různých nadřazených sestavách. To vede k tomu, že čas přípravy práce takové dávky je započítán pouze jednou pro celou DOP a z toho vyplývá, že hodnota tohoto času je rozpočítaná mezi výrobky DOP. Podle tohoto rozpočítání může mít jeden výrobek v různých DOP různou hodnotu a proto je odhad potřeba vztáhnout vždy na kombinaci DOP-výrobek (projectOrderItemId - goodsId).
GET /karat/product-estimates/{updatedSinceTimestamp}
ProductEstimate
projectOrderItemIdgoodsIdnoWrapStageEmployeeTimeMinutesPc - Čas zaměstnancůnoWrapStageContractorTimeMinutesPc - Čas agenturních zam. - obvykle 0, protože ve výrobních postupech se pracuje s pracovišti kmenových zaměstnanců.wrapStageEmployeeTimeMinutesPc - Paletizace, čas zam.wrapStageContractorTimeMinutesPc - Paletizace, čas agent. zam. - obvykle 0, protože ve výrobních postupech se pracuje s pracovišti kmenových zaměstnanců.workValuePc - Mzdový průměrnonProductionValuePc - Mzdová režiefixedValuePc - Výrobní režieadminValuePc - Správní režiecontractorValuePc - Režie agent. zam. - obvykle 0, protože ve výrobních postupech se pracuje s pracovišti kmenových zaměstnanců.materialValuePc - Hodnota materiálucooperationValuePc - Hodnota kooperacíGET /karat/stocks/{updatedSinceTimestamp}
Stock
namepositions: set of stringsGET /karat/stages/{updatedSinceTimestamp}
Stage
namecostCenter - nákladové střediskoexternalIdstageGroupId - id skupiny pracovišťstageGroupName - název skupiny pracovišťGET /karat/currencies/{updatedSinceTimestamp}
Currency
id - ISO 4217 alphabetic codenameGET /karat/countries/{updatedSinceTimestamp}
Country
iso31662nameGET /karat/purchase-orders/{updatedSinceTimestamp}
PurchaseOrder
supplierId - CompanycreatedBy - id osobycurrency - ISO 4217costCenter - Střediskoitems: list of IssuedOrderItemPurchaseOrderItem
state {NEW, DEMANDED, ORDERED, CONFIRMED, DELIVERED, FINISHED, CANCELLED}purchaseOrderIdgoodsIdquantitypricedeliveryDate - očekávané datum doručeníadditionalCost - cena přepravy (související náklady)additionalCostCurrency - ISO 4217GET /karat/cooperation-orders/{updatedSinceTimestamp}
CooperationOrder
contractorId - CompanycreatedBy - id osobycurrencyitems: list of CooperationOrderItemCooperationOrderItem
state {NEW, ORDERED, DELIVERED, FINISHED, CANCELLED}cooperationOrderIdgoodsIdquantitypricedeliveryCost - cena přepravydeliveryCostCurrency - ISO 4217Odpovídá například vedení mezi Prahou a Brnem.
GET /karat/project-orders/{updatedSinceTimestamp}
ProjectOrder
customerIdcurrency - ISO 4217costCenteritems: list of ProjectOrderItemProjectOrderItem
Položka projektové objednávky odpovídá části vedení, třeba mezi Prahou a Humpolcem. V jiné terminologii také DOP nebo i zakázka.
state {NEW, PLANNED, WAITING_FOR_APPROVAL, APPROVED, CONFIRMED, PRODUCED, FINISHED, INVOICED, CANCELLED}projectOrderIdgoodsId - toto je tzv. "představitel", stožár představující část vedení reprezentující tuto část vedení.salesOrderId - id prodejní objednávkyquantitypricedispatchDate - požadované datum expedicebillingDate - požadované datum fakturacePo uzavření zakázky v Karatu - tedy položky projektové objednávky, bude položka projektové objednávky uzamčena, tedy nepůjde na ni odvést hodnota (záznam práce, vydat materiál, kooperace).
GET /karat/delivery-bills/{updatedSinceTimestamp}
DeliveryBill
state {NEW, TO_INVOICE, INVOICED, CLOSED, CANCELLED, FAILED}customerId - Companyitems: list of DeliveryBillItemDeliveryBillItem
deliveryBillIdprojectOrderItemId - může být prázdné pro služby přidané na DLgoodsIdquantityV tomto přehledu budou pohyby materiálů a pohyby výrobků. Nejsou zahrnuty pohyby polotovarů. To, co je polotovar je uvedeno v kapitole zboží.
Přeskladnění je realizované jako dva nebo více skladových pohybů pro jedno zboží v rámci jednoho skladového dokladu. Například jeden záporný pohyb (výdej) z jednoho skladu a dva kladné pohyby (příjmy) na jiné sklady. Předpokladem je, že suma příjmů a výdajů se v rámci jednoho přeskladnění rovná nule.
V případě storna pohybu se ve Factorify nevytváří nový skladový doklad. Storno pohyb se “zařadí” do původního dokladu. Vzhledem k tomu, že každý pohyb má svůj čas i storno pohyb lze vytvořit s časem jiným, než je čas stornovaného pohybu. Skladový doklad ve kterém vznikl storno pohyb bude označeý jako aktualizovaný.
DOP - zakázku, lze považovat za uzvařenou v případě, že všechno zboží bylo vydané.
Někdy se stane, že se pro zakázku vyrobí něco navíc (polotovary), to se později spotřebuje v jiné zakázce. Navrhujeme náklady nechat v původní zakázce a provést převod do nové zakázky s nulovou hodnotou. Hodnotově tedy toto zboží zůstane v původní zakázce.
GET /karat/stock-documents/{updatedSinceTimestamp}
StockDocument
typebatchId - výrobní dávka přijatá z výrobycostCenter - nákladové střediskoconsumingBatchId - výrobní dávka spotřebující materiálnonconformityIdissuedStageIdissuedStageGroupIdtargetPersonIdprojectOrderItemId - ID položky projektové objednávkyitems: list of StockMoveStockMove
stockDocumentIdgoodsIdbatch - šaržestockIdpositioncancelledStockMoveIdpurchaseOrderItemIddeliveryBillItemIdmovedAt - čas, ke kterému pohyb vzniklquantitypriceInRefCurrency - ve specifických případech lze ocenit konkrétní pohyb. Jinak se vezme cena ze sklad. objednávky, případně vážená nákupní cena. Vyplněno pouze pokud je dostupná skladová objednávkatypekind - KS pro Konsignační skladFactorify udržuje pro každé zboží jednu cenu nepříč všemi sklady.
Entita neobsahuje parametr id nebo audit parametry, jako je čas vzniku, atp.
POST /karat/weighted-average-prices/{updateSinceTimestamp} - list záznamů. Smaže vážené nákupní ceny platné od updateSinceTimestamp a vloží nově zadané.
WeightedAveragePrice
goodsIdvalidFrom - platná od okamžikupriceInRefCurrency - cena v referenční měně (obvykle CZK)Materiál spotřebovaný na operaci je možné dotáhnout z agendy skladových dokladů a pohybů.
Factorify umožňuje vytvořit záznam práci na dávce i po jejím dokončení. Toto se stává v případě, kdy se během spotřeby zjistí, že na polotovaru je potřeba něco dodělat. Bude potřeba připravit mechanismus uzamčení zakázky, kdy po jejím uzamčení nepůjde na zakázku (project order item) přidat další záznam práce.
GET /karat/work-evidence-list/{updatedSinceTimestamp}
WorkEvidence
projectOrderItemIdworkerId - PersonstageId - StagecooperationOrderItemId - CooperationOrderItem, je nastavené pro záznam práce v kooperaci. V takovém případě se nepracuje s časem práce, ale ta je oceněna dle ceny kooperace.consumptionDocumentId - StockDocument, je skladový dokument se spotřebovaným zbožím.effectiveTime - čas, kte kterému je záznam platný, obvykle okamžik dokončení práce nebo příjmu z kooperace.durationMinutes - počet minut strávených prací. Toto není užitečné pro kooperace.quantity - dokončené množstvíbatchQuantity - velikost dávky v okamžiku práceEndpoint nevrací id nebo audit. pole.
GET /karat/economy-lock
POST /karat/economy-lock
EconomyLock
economyLockedTo - Záznamy (práce, sklad. pohyby) ovlivňující ekonomiku nepůjde před tímto datem vytvořit nebo změnit.Na rozdíl od standardní struktury objednávek a zboží EGE je struktura pro Karat zjednodušená.
