Subversion Repositories SmartDukaan

Rev

Rev 5185 | Rev 5307 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5185 Rev 5238
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()