| Line 16... |
Line 16... |
| 16 |
InventoryType
|
16 |
InventoryType
|
| 17 |
from shop2020.thriftpy.model.v1.order.ttypes import OrderStatus
|
17 |
from shop2020.thriftpy.model.v1.order.ttypes import OrderStatus
|
| 18 |
from shop2020.thriftpy.purchase.ttypes import PurchaseServiceException, POStatus, \
|
18 |
from shop2020.thriftpy.purchase.ttypes import PurchaseServiceException, POStatus, \
|
| 19 |
PurchaseOrder as TPurchaseOrder, LineItem as TLineItem
|
19 |
PurchaseOrder as TPurchaseOrder, LineItem as TLineItem
|
| 20 |
from sqlalchemy import create_engine
|
20 |
from sqlalchemy import create_engine
|
| - |
|
21 |
from sqlalchemy.sql.expression import or_
|
| 21 |
import datetime
|
22 |
import datetime
|
| 22 |
import logging
|
23 |
import logging
|
| 23 |
import sys
|
24 |
import sys
|
| 24 |
|
25 |
|
| 25 |
|
26 |
|
| Line 187... |
Line 188... |
| 187 |
if availability.has_key(item.id):
|
188 |
if availability.has_key(item.id):
|
| 188 |
availability[item.id] = [availability[item.id][0] + item.itemInventory.availability[goodWarehouseId], item]
|
189 |
availability[item.id] = [availability[item.id][0] + item.itemInventory.availability[goodWarehouseId], item]
|
| 189 |
else:
|
190 |
else:
|
| 190 |
availability[item.id] = [item.itemInventory.availability[goodWarehouseId], item]
|
191 |
availability[item.id] = [item.itemInventory.availability[goodWarehouseId], item]
|
| 191 |
|
192 |
|
| - |
|
193 |
unfulfilledPurchaseOrders = PurchaseOrder.query.filter(or_(PurchaseOrder.status == POStatus.PARTIALLY_FULFILLED, PurchaseOrder.status == POStatus.READY)).all()
|
| - |
|
194 |
for purchaseOrder in unfulfilledPurchaseOrders:
|
| - |
|
195 |
for lineitem in purchaseOrder.lineitems:
|
| - |
|
196 |
if availability.has_key(lineitem.itemId):
|
| - |
|
197 |
availability[lineitem.itemId] = [availability[lineitem.itemId][0] + lineitem.unfulfilledQuantity, availability[lineitem.itemId][1]]
|
| - |
|
198 |
else:
|
| - |
|
199 |
item = catalog_client.getItem(lineitem.itemId)
|
| - |
|
200 |
availability[item.id] = [lineitem.unfulfilledQuantity, item]
|
| - |
|
201 |
|
| 192 |
codRequirements = {}
|
202 |
codRequirements = {}
|
| 193 |
requirements = {}
|
203 |
requirements = {}
|
| 194 |
for order in pending_orders:
|
204 |
for order in pending_orders:
|
| 195 |
if order.purchaseOrderId:
|
205 |
if order.purchaseOrderId:
|
| 196 |
continue
|
206 |
continue
|
| Line 210... |
Line 220... |
| 210 |
for itemId in requirements.keys():
|
220 |
for itemId in requirements.keys():
|
| 211 |
requirementsCount = requirements.get(itemId)
|
221 |
requirementsCount = requirements.get(itemId)
|
| 212 |
if availability.has_key(itemId):
|
222 |
if availability.has_key(itemId):
|
| 213 |
availabilityCount = availability.get(itemId)[0]
|
223 |
availabilityCount = availability.get(itemId)[0]
|
| 214 |
item = availability.get(itemId)[1]
|
224 |
item = availability.get(itemId)[1]
|
| 215 |
if item.preferredVendor is None or item.preferredVendor == 1:
|
- |
|
| 216 |
continue
|
- |
|
| 217 |
if requirementsCount > availabilityCount:
|
225 |
if requirementsCount > availabilityCount:
|
| - |
|
226 |
if item.preferredVendor is None:
|
| - |
|
227 |
raise PurchaseServiceException(101, 'Preferred Vendor missing for ' + " ".join([str(item.brand), str(item.modelName), str(item.modelNumber), str(item.color)]))
|
| 218 |
if (netRequirements.has_key(item.preferredVendor)):
|
228 |
if (netRequirements.has_key(item.preferredVendor)):
|
| 219 |
netRequirements[item.preferredVendor].append([item, requirementsCount - availabilityCount])
|
229 |
netRequirements[item.preferredVendor].append([item, requirementsCount - availabilityCount])
|
| 220 |
else:
|
230 |
else:
|
| 221 |
netRequirements[item.preferredVendor] = [[item, requirementsCount - availabilityCount]];
|
231 |
netRequirements[item.preferredVendor] = [[item, requirementsCount - availabilityCount]];
|
| 222 |
else:
|
232 |
else:
|
| 223 |
item = catalog_client.getItem(itemId);
|
233 |
item = catalog_client.getItem(itemId);
|
| 224 |
if item.preferredVendor is None:
|
234 |
if item.preferredVendor is None:
|
| 225 |
raise PurchaseServiceException(101, 'Preferred Vendor missing for ' + " ".join([item.brand, item.modelName, item.modelNumber, item.color]))
|
235 |
raise PurchaseServiceException(101, 'Preferred Vendor missing for ' + " ".join([str(item.brand), str(item.modelName), str(item.modelNumber), str(item.color)]))
|
| 226 |
if item.preferredVendor == 1:
|
- |
|
| 227 |
raise PurchaseServiceException(101, 'Preferred Vendor set to HotSpot for ' + " ".join([item.brand, item.modelName, item.modelNumber, item.color]))
|
- |
|
| 228 |
if (netRequirements.has_key(item.preferredVendor)):
|
236 |
if (netRequirements.has_key(item.preferredVendor)):
|
| 229 |
netRequirements[item.preferredVendor].append([item, requirementsCount])
|
237 |
netRequirements[item.preferredVendor].append([item, requirementsCount])
|
| 230 |
else:
|
238 |
else:
|
| 231 |
netRequirements[item.preferredVendor] = [[item, requirementsCount]];
|
239 |
netRequirements[item.preferredVendor] = [[item, requirementsCount]];
|
| 232 |
|
240 |
|
| 233 |
if not netRequirements:
|
241 |
if not netRequirements:
|
| 234 |
return purchaseOrders
|
242 |
return purchaseOrders
|
| 235 |
|
243 |
|
| 236 |
for vendorId in netRequirements.keys():
|
244 |
for vendorId in netRequirements.keys():
|
| 237 |
t_purchase_order = TPurchaseOrder()
|
245 |
t_purchase_order = TPurchaseOrder()
|