-
Notifications
You must be signed in to change notification settings - Fork 10
/
Manufracturer.sol
63 lines (52 loc) · 2.76 KB
/
Manufracturer.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
pragma solidity ^0.4.19;
import "./Ownable.sol";
import "./Manager.sol";
import "./LandTransport.sol";
import "./Distrubuter.sol";
import "./Escrow.sol";
import "./Customs.sol";
import "./PortAuthority.sol";
import "./Shipping.sol";
contract Manufacture is Ownable, main, LandTransport, Distrubuter, Customs, portauthority, ShipmentTracking {
event OrderConfirmed(uint _orderId);
event OrderManifactured(uint _orderId);
event OrderDispached(uint _orderId);
event DelayInManufacturing(uint _orderId, uint _delayTime);
function TotaltimeRequired(uint orderId, uint _TotaltimeRequired, uint _expectedTimeOfDeparture){
itemMap[orderId].totalTimeRequired = now + _TotaltimeRequired; // Took time required for whole process.
statsMap[orderId].timeToNextEntity = now + _expectedTimeOfDeparture; // Took time required to transfer to next entity.
}
function AddMoney(address AccountHolder, uint Amount){
BalanceOfMoney[AccountHolder]=BalanceOfMoney[AccountHolder]+Amount;
}
function orderConfirmed(uint orderId) {
require(msg.sender==flowOfObject[orderId].Addresses[currentaddress[orderId]]);
require(bankConfirmation[orderId]==true);
statsMap[orderId].checkPoint="OrderConfirmed"; // Updates currentStatusOfOrder.
statsMap[orderId].timeTheEventCalled=now;
OrderConfirmed(orderId); // Event of OrderConfirmed.
}
function orderManifactured(uint orderId){
require(keccak256(statsMap[orderId].checkPoint)== keccak256("OrderConfirmed"));
statsMap[orderId].checkPoint="OrderManifactured"; // Updates currentStatusOfOrder.
statsMap[orderId].timeTheEventCalled=now;
emit OrderManifactured(orderId); // Event of OrderManifactured.
}
function orderDispached(uint orderId, uint Weight) {
require(keccak256(statsMap[orderId].checkPoint)== keccak256("OrderManifactured"));
statsMap[orderId].checkPoint="OrderDispached";
statsMap[orderId].timeTheEventCalled=now; // Updates currentStatusOfOrder.
itemMap[orderId].weight=Weight;
OrderDispached(orderId); // Event of OrderDispached.
transferPossesion(orderId);
}
function delayInManufacturing(uint orderId, uint _delayTime) {
uint delayTime = _delayTime;
statsMap[orderId].checkPoint="OrderDelayed";
statsMap[orderId].timeTheEventCalled=now; // Updates currentStatusOfOrder.
DelayInManufacturing(orderId, delayTime); // Event of DelayInManufacturing.
}
function currentStatusOfOrder(uint _orderId) public returns(string, uint){ // Function to check currentStatusOfOrder.
return(statsMap[_orderId].checkPoint, statsMap[_orderId].timeTheEventCalled);
}
}