| Line 8... |
Line 8... |
| 8 |
from shop2020.clients.InventoryClient import InventoryClient
|
8 |
from shop2020.clients.InventoryClient import InventoryClient
|
| 9 |
from shop2020.clients.TransactionClient import TransactionClient
|
9 |
from shop2020.clients.TransactionClient import TransactionClient
|
| 10 |
from shop2020.purchase.main.model.Invoice import Invoice
|
10 |
from shop2020.purchase.main.model.Invoice import Invoice
|
| 11 |
from shop2020.purchase.main.model.LineItem import LineItem
|
11 |
from shop2020.purchase.main.model.LineItem import LineItem
|
| 12 |
from shop2020.purchase.main.model.Purchase import Purchase
|
12 |
from shop2020.purchase.main.model.Purchase import Purchase
|
| 13 |
from shop2020.purchase.main.model.PurchaseOrder import PurchaseOrder
|
- |
|
| 14 |
from shop2020.purchase.main.model.PurchaseReturn import PurchaseReturn
|
13 |
from shop2020.purchase.main.model.PurchaseReturn import PurchaseReturn
|
| 15 |
from shop2020.purchase.main.model.RevisionedPurchaseOrder import \
|
14 |
from shop2020.purchase.main.model.RevisionedPurchaseOrder import \
|
| 16 |
RevisionedPurchaseOrder
|
15 |
RevisionedPurchaseOrder
|
| 17 |
from shop2020.purchase.main.model.Supplier import Supplier
|
16 |
from shop2020.purchase.main.model.Supplier import Supplier
|
| - |
|
17 |
from shop2020.purchase.main.model.PurchaseOrder import PurchaseOrder
|
| 18 |
from shop2020.thriftpy.generic.ttypes import ExceptionType
|
18 |
from shop2020.thriftpy.generic.ttypes import ExceptionType
|
| 19 |
from shop2020.thriftpy.model.v1.inventory.ttypes import WarehouseType, \
|
19 |
from shop2020.thriftpy.model.v1.inventory.ttypes import WarehouseType, \
|
| 20 |
InventoryType
|
20 |
InventoryType
|
| 21 |
from shop2020.thriftpy.model.v1.order.ttypes import OrderStatus
|
21 |
from shop2020.thriftpy.model.v1.order.ttypes import OrderStatus
|
| 22 |
from shop2020.thriftpy.purchase.ttypes import PurchaseServiceException, POStatus, \
|
22 |
from shop2020.thriftpy.purchase.ttypes import PurchaseServiceException, POStatus, \
|
| Line 43... |
Line 43... |
| 43 |
engine = create_engine('mysql://root:shop2020@' + db_hostname + '/' + dbname, pool_recycle=7200)
|
43 |
engine = create_engine('mysql://root:shop2020@' + db_hostname + '/' + dbname, pool_recycle=7200)
|
| 44 |
metadata.bind = engine
|
44 |
metadata.bind = engine
|
| 45 |
metadata.bind.echo = echoOn
|
45 |
metadata.bind.echo = echoOn
|
| 46 |
setup_all(True)
|
46 |
setup_all(True)
|
| 47 |
|
47 |
|
| - |
|
48 |
def getPOforOurExternalBilling(self):
|
| - |
|
49 |
todayDate = datetime.datetime.now()
|
| - |
|
50 |
todayDate = todayDate.replace(hour=0)
|
| - |
|
51 |
purchaseOrder = PurchaseOrder.query.filter(PurchaseOrder.supplierId == 1).filter(PurchaseOrder.createdAt > todayDate).first()
|
| - |
|
52 |
if purchaseOrder is None:
|
| - |
|
53 |
t_purchaseOrder = TPurchaseOrder()
|
| - |
|
54 |
t_purchaseOrder.supplierId = 1
|
| - |
|
55 |
t_purchaseOrder.createdAt = datetime.datetime.now()
|
| - |
|
56 |
t_purchaseOrder.status = 0
|
| - |
|
57 |
t_purchaseOrder.totalCost = 0
|
| - |
|
58 |
t_purchaseOrder.poNumber = 'Ours-Ext-' + str(todayDate.year) + "-" + str(todayDate.month) + "-" + str(todayDate.day)
|
| - |
|
59 |
purchaseOrder = PurchaseOrder(t_purchaseOrder)
|
| - |
|
60 |
session.commit()
|
| - |
|
61 |
return purchaseOrder.id
|
| - |
|
62 |
|
| - |
|
63 |
def updatelineItemforOursExternalBilling(self, poId, itemId, unitPrice):
|
| - |
|
64 |
lineItem = LineItem.get_by(purchaseOrder_id=poId, itemId=itemId)
|
| - |
|
65 |
if lineItem is None:
|
| - |
|
66 |
purchaseOrder = PurchaseOrder.get_by(id=poId)
|
| - |
|
67 |
t_lineItem = TLineItem()
|
| - |
|
68 |
t_lineItem.itemId = itemId
|
| - |
|
69 |
t_lineItem.quantity = 1
|
| - |
|
70 |
t_lineItem.unfulfilledQuantity = 1
|
| - |
|
71 |
t_lineItem.createdAt = datetime.datetime.now()
|
| - |
|
72 |
t_lineItem.unitPrice = unitPrice
|
| - |
|
73 |
t_lineItem.fulfilled = False
|
| - |
|
74 |
lineItem = LineItem(purchaseOrder, t_lineItem)
|
| - |
|
75 |
else:
|
| - |
|
76 |
lineItem.quantity = lineItem.quantity + 1
|
| - |
|
77 |
lineItem.fulfilled = False
|
| - |
|
78 |
lineItem.unfulfilledQuantity = lineItem.unfulfilledQuantity + 1
|
| - |
|
79 |
session.commit()
|
| - |
|
80 |
|
| - |
|
81 |
def receiveinvoiceforOursExternalBilling(self, invoiceNumber):
|
| - |
|
82 |
invoice = Invoice()
|
| - |
|
83 |
invoice.invoiceNumber = invoiceNumber
|
| - |
|
84 |
invoice.date = datetime.datetime.now()
|
| - |
|
85 |
invoice.numItems = 1
|
| - |
|
86 |
invoice.receivedFrom = "Hotspot-Billing"
|
| - |
|
87 |
invoice.supplierId = 1
|
| - |
|
88 |
session.commit()
|
| - |
|
89 |
|
| - |
|
90 |
def createPurchaseforOursExternalBilling(self, poId, invoiceNumber):
|
| - |
|
91 |
purchaseOrder = PurchaseOrder.get_by(id=poId)
|
| - |
|
92 |
purchase = Purchase(purchaseOrder, invoiceNumber, 0)
|
| - |
|
93 |
session.commit()
|
| - |
|
94 |
return purchase.id
|
| - |
|
95 |
|
| 48 |
def createPurchaseOrder(self, tPurchaseOrder):
|
96 |
def createPurchaseOrder(self, tPurchaseOrder):
|
| 49 |
"""
|
97 |
"""
|
| 50 |
Creates a purchase order based on the data in the given purchase order object.
|
98 |
Creates a purchase order based on the data in the given purchase order object.
|
| 51 |
This method populates a number of missing fields
|
99 |
This method populates a number of missing fields
|
| 52 |
|
100 |
|
| Line 111... |
Line 159... |
| 111 |
- purchaseOrderId
|
159 |
- purchaseOrderId
|
| 112 |
- invoiceNumber
|
160 |
- invoiceNumber
|
| 113 |
- freightCharges
|
161 |
- freightCharges
|
| 114 |
"""
|
162 |
"""
|
| 115 |
try:
|
163 |
try:
|
| 116 |
purchase_order = PurchaseOrder.get_by(id = purchaseOrderId)
|
164 |
purchase_order = PurchaseOrder.get_by(id=purchaseOrderId)
|
| 117 |
purchase = Purchase(purchase_order, invoiceNumber, freightCharges)
|
165 |
purchase = Purchase(purchase_order, invoiceNumber, freightCharges)
|
| 118 |
session.commit()
|
166 |
session.commit()
|
| 119 |
return purchase.id
|
167 |
return purchase.id
|
| 120 |
finally:
|
168 |
finally:
|
| 121 |
self.close_session()
|
169 |
self.close_session()
|
| Line 143... |
Line 191... |
| 143 |
- purchaseOrderId
|
191 |
- purchaseOrderId
|
| 144 |
- open
|
192 |
- open
|
| 145 |
"""
|
193 |
"""
|
| 146 |
try:
|
194 |
try:
|
| 147 |
if open:
|
195 |
if open:
|
| 148 |
purchases = Purchase.query.filter_by(purchaseOrder_id = purchaseOrderId, receivedOn = None).all()
|
196 |
purchases = Purchase.query.filter_by(purchaseOrder_id=purchaseOrderId, receivedOn=None).all()
|
| 149 |
else:
|
197 |
else:
|
| 150 |
purchases = Purchase.query.filter_by(purchaseOrder_id = purchaseOrderId).filter(Purchase.receivedOn != None).all()
|
198 |
purchases = Purchase.query.filter_by(purchaseOrder_id=purchaseOrderId).filter(Purchase.receivedOn != None).all()
|
| 151 |
|
199 |
|
| 152 |
return [purchase.to_thrift_object() for purchase in purchases]
|
200 |
return [purchase.to_thrift_object() for purchase in purchases]
|
| 153 |
finally:
|
201 |
finally:
|
| 154 |
self.close_session()
|
202 |
self.close_session()
|
| 155 |
|
203 |
|
| Line 160... |
Line 208... |
| 160 |
Parameters:
|
208 |
Parameters:
|
| 161 |
- purchaseOrderId
|
209 |
- purchaseOrderId
|
| 162 |
- open
|
210 |
- open
|
| 163 |
"""
|
211 |
"""
|
| 164 |
try:
|
212 |
try:
|
| 165 |
purchases = Purchase.query.filter_by(purchaseOrder_id = purchaseOrderId).all()
|
213 |
purchases = Purchase.query.filter_by(purchaseOrder_id=purchaseOrderId).all()
|
| 166 |
return [purchase.to_thrift_object() for purchase in purchases]
|
214 |
return [purchase.to_thrift_object() for purchase in purchases]
|
| 167 |
finally:
|
215 |
finally:
|
| 168 |
self.close_session()
|
216 |
self.close_session()
|
| 169 |
|
217 |
|
| 170 |
|
218 |
|
| Line 174... |
Line 222... |
| 174 |
|
222 |
|
| 175 |
Parameters:
|
223 |
Parameters:
|
| 176 |
- purchaseId
|
224 |
- purchaseId
|
| 177 |
"""
|
225 |
"""
|
| 178 |
try:
|
226 |
try:
|
| 179 |
return self.getPurchaseOrder(Purchase.query.filter_by(id = purchaseId).one().purchaseOrder_id)
|
227 |
return self.getPurchaseOrder(Purchase.query.filter_by(id=purchaseId).one().purchaseOrder_id)
|
| 180 |
finally:
|
228 |
finally:
|
| 181 |
self.close_session()
|
229 |
self.close_session()
|
| 182 |
|
230 |
|
| 183 |
def getPendingPurchaseOrders(self, warehouseId):
|
231 |
def getPendingPurchaseOrders(self, warehouseId):
|
| 184 |
"""
|
232 |
"""
|
| Line 241... |
Line 289... |
| 241 |
netRequirements = {}
|
289 |
netRequirements = {}
|
| 242 |
for itemId in requirements.keys():
|
290 |
for itemId in requirements.keys():
|
| 243 |
requirementsCount = requirements.get(itemId)
|
291 |
requirementsCount = requirements.get(itemId)
|
| 244 |
if availability.has_key(itemId):
|
292 |
if availability.has_key(itemId):
|
| 245 |
availabilityCount = availability.get(itemId)[0]
|
293 |
availabilityCount = availability.get(itemId)[0]
|
| 246 |
item = availability.get(itemId)[1]
|
294 |
item = availability.get(itemId)[1]
|
| 247 |
if requirementsCount > availabilityCount:
|
295 |
if requirementsCount > availabilityCount:
|
| 248 |
if item.preferredVendor is None:
|
296 |
if item.preferredVendor is None:
|
| 249 |
raise PurchaseServiceException(101, 'Preferred Vendor missing for ' + " ".join([str(item.brand), str(item.modelName), str(item.modelNumber), str(item.color)]))
|
297 |
raise PurchaseServiceException(101, 'Preferred Vendor missing for ' + " ".join([str(item.brand), str(item.modelName), str(item.modelNumber), str(item.color)]))
|
| 250 |
if (netRequirements.has_key(item.preferredVendor)):
|
298 |
if (netRequirements.has_key(item.preferredVendor)):
|
| 251 |
netRequirements[item.preferredVendor].append([item, requirementsCount - availabilityCount])
|
299 |
netRequirements[item.preferredVendor].append([item, requirementsCount - availabilityCount])
|
| Line 267... |
Line 315... |
| 267 |
t_purchase_order = TPurchaseOrder()
|
315 |
t_purchase_order = TPurchaseOrder()
|
| 268 |
t_purchase_order.supplierId = vendorId
|
316 |
t_purchase_order.supplierId = vendorId
|
| 269 |
t_purchase_order.warehouseId = warehouseId
|
317 |
t_purchase_order.warehouseId = warehouseId
|
| 270 |
t_purchase_order.lineitems = []
|
318 |
t_purchase_order.lineitems = []
|
| 271 |
for key in netRequirements.get(vendorId):
|
319 |
for key in netRequirements.get(vendorId):
|
| 272 |
item = key[0]
|
320 |
item = key[0]
|
| 273 |
quantity = key[1]
|
321 |
quantity = key[1]
|
| 274 |
t_po_lineitem = TLineItem()
|
322 |
t_po_lineitem = TLineItem()
|
| 275 |
t_po_lineitem.productGroup = item.productGroup
|
323 |
t_po_lineitem.productGroup = item.productGroup
|
| 276 |
t_po_lineitem.brand = item.brand
|
324 |
t_po_lineitem.brand = item.brand
|
| 277 |
t_po_lineitem.modelNumber = item.modelNumber
|
325 |
t_po_lineitem.modelNumber = item.modelNumber
|
| Line 293... |
Line 341... |
| 293 |
purchaseOrders.append(t_purchase_order)
|
341 |
purchaseOrders.append(t_purchase_order)
|
| 294 |
return purchaseOrders
|
342 |
return purchaseOrders
|
| 295 |
finally:
|
343 |
finally:
|
| 296 |
self.close_session()
|
344 |
self.close_session()
|
| 297 |
|
345 |
|
| 298 |
def getSuppliers(self, ):
|
346 |
def getSuppliers(self,):
|
| 299 |
"""
|
347 |
"""
|
| 300 |
Returns all the valid suppliers
|
348 |
Returns all the valid suppliers
|
| 301 |
"""
|
349 |
"""
|
| 302 |
try:
|
350 |
try:
|
| 303 |
return [Supplier.to_thrift_object(supplier) for supplier in Supplier.query.all()]
|
351 |
return [Supplier.to_thrift_object(supplier) for supplier in Supplier.query.all()]
|
| Line 312... |
Line 360... |
| 312 |
- purchaseId
|
360 |
- purchaseId
|
| 313 |
- itemId
|
361 |
- itemId
|
| 314 |
- quantity
|
362 |
- quantity
|
| 315 |
"""
|
363 |
"""
|
| 316 |
try:
|
364 |
try:
|
| 317 |
purchaseOrderId = Purchase.query.filter_by(id = purchaseId).one().purchaseOrder_id
|
365 |
purchaseOrderId = Purchase.query.filter_by(id=purchaseId).one().purchaseOrder_id
|
| 318 |
lineitems = LineItem.query.filter_by(purchaseOrder_id = purchaseOrderId, itemId = itemId).all()
|
366 |
lineitems = LineItem.query.filter_by(purchaseOrder_id=purchaseOrderId, itemId=itemId).all()
|
| 319 |
if lineitems:
|
367 |
if lineitems:
|
| 320 |
fulfilledQuantity = lineitems[0].quantity - lineitems[0].unfulfilledQuantity
|
368 |
fulfilledQuantity = lineitems[0].quantity - lineitems[0].unfulfilledQuantity
|
| 321 |
if fulfilledQuantity < quantity:
|
369 |
if fulfilledQuantity < quantity:
|
| 322 |
raise PurchaseServiceException(101, 'Can UnFulfill only ' + str(fulfilledQuantity) + 'quantity')
|
370 |
raise PurchaseServiceException(101, 'Can UnFulfill only ' + str(fulfilledQuantity) + 'quantity')
|
| 323 |
else:
|
371 |
else:
|
| Line 340... |
Line 388... |
| 340 |
- purchaseOrderId
|
388 |
- purchaseOrderId
|
| 341 |
- itemId
|
389 |
- itemId
|
| 342 |
- quantity
|
390 |
- quantity
|
| 343 |
"""
|
391 |
"""
|
| 344 |
try:
|
392 |
try:
|
| 345 |
lineitems = LineItem.query.filter_by(purchaseOrder_id = purchaseOrderId, itemId = itemId).all()
|
393 |
lineitems = LineItem.query.filter_by(purchaseOrder_id=purchaseOrderId, itemId=itemId).all()
|
| 346 |
if lineitems:
|
394 |
if lineitems:
|
| 347 |
if lineitems[0].unfulfilledQuantity < quantity:
|
395 |
if lineitems[0].unfulfilledQuantity < quantity:
|
| 348 |
raise PurchaseServiceException(101, 'Can fulfill only ' + str(lineitems[0].unfulfilledQuantity) + ' quantity')
|
396 |
raise PurchaseServiceException(101, 'Can fulfill only ' + str(lineitems[0].unfulfilledQuantity) + ' quantity')
|
| 349 |
else:
|
397 |
else:
|
| 350 |
lineitems[0].unfulfilledQuantity = lineitems[0].unfulfilledQuantity - quantity
|
398 |
lineitems[0].unfulfilledQuantity = lineitems[0].unfulfilledQuantity - quantity
|
| 351 |
if not lineitems[0].unfulfilledQuantity:
|
399 |
if not lineitems[0].unfulfilledQuantity:
|
| 352 |
lineitems[0].fulfilled = 1
|
400 |
lineitems[0].fulfilled = 1
|
| 353 |
session.commit()
|
401 |
session.commit()
|
| 354 |
if not LineItem.query.filter_by(purchaseOrder_id = purchaseOrderId, fulfilled = 0).all():
|
402 |
if not LineItem.query.filter_by(purchaseOrder_id=purchaseOrderId, fulfilled=0).all():
|
| 355 |
purchaseOrder = PurchaseOrder.get_by(id=purchaseOrderId)
|
403 |
purchaseOrder = PurchaseOrder.get_by(id=purchaseOrderId)
|
| 356 |
purchaseOrder.status = POStatus.CLOSED
|
404 |
purchaseOrder.status = POStatus.CLOSED
|
| 357 |
session.commit()
|
405 |
session.commit()
|
| 358 |
return
|
406 |
return
|
| 359 |
|
407 |
|
| 360 |
raise PurchaseServiceException(101, 'No lineitem found with this itemId: ' + str(itemId) + ' in PO Id: ' + str(purchaseOrderId) )
|
408 |
raise PurchaseServiceException(101, 'No lineitem found with this itemId: ' + str(itemId) + ' in PO Id: ' + str(purchaseOrderId))
|
| 361 |
finally:
|
409 |
finally:
|
| 362 |
self.close_session()
|
410 |
self.close_session()
|
| 363 |
|
411 |
|
| 364 |
def updatePurchaseOrder(self, purchaseOrder):
|
412 |
def updatePurchaseOrder(self, purchaseOrder):
|
| 365 |
"""
|
413 |
"""
|
| Line 367... |
Line 415... |
| 367 |
|
415 |
|
| 368 |
Parameters:
|
416 |
Parameters:
|
| 369 |
- purchaseOrder
|
417 |
- purchaseOrder
|
| 370 |
"""
|
418 |
"""
|
| 371 |
try:
|
419 |
try:
|
| 372 |
existingPurchaseOrder = PurchaseOrder.get_by(id = purchaseOrder.id)
|
420 |
existingPurchaseOrder = PurchaseOrder.get_by(id=purchaseOrder.id)
|
| 373 |
maxRevision = 0
|
421 |
maxRevision = 0
|
| 374 |
existingRevisions = RevisionedPurchaseOrder.query.filter_by(purchaseOrderId = purchaseOrder.id).all()
|
422 |
existingRevisions = RevisionedPurchaseOrder.query.filter_by(purchaseOrderId=purchaseOrder.id).all()
|
| 375 |
if existingRevisions:
|
423 |
if existingRevisions:
|
| 376 |
maxRevision = max([a.revision for a in existingRevisions]) + 1
|
424 |
maxRevision = max([a.revision for a in existingRevisions]) + 1
|
| 377 |
|
425 |
|
| 378 |
newPOItems = {}
|
426 |
newPOItems = {}
|
| 379 |
for t_lineitem in purchaseOrder.lineitems:
|
427 |
for t_lineitem in purchaseOrder.lineitems:
|
| Line 427... |
Line 475... |
| 427 |
|
475 |
|
| 428 |
Parameters:
|
476 |
Parameters:
|
| 429 |
- invoiceNumber, supplierId
|
477 |
- invoiceNumber, supplierId
|
| 430 |
"""
|
478 |
"""
|
| 431 |
try:
|
479 |
try:
|
| 432 |
invoice = Invoice.query.filter_by(invoiceNumber = invoiceNumber, supplierId = supplierId).first()
|
480 |
invoice = Invoice.query.filter_by(invoiceNumber=invoiceNumber, supplierId=supplierId).first()
|
| 433 |
if invoice is None:
|
481 |
if invoice is None:
|
| 434 |
return invoice
|
482 |
return None
|
| 435 |
else:
|
483 |
else:
|
| 436 |
return invoice.to_thrift_object()
|
484 |
return invoice.to_thrift_object()
|
| 437 |
finally:
|
485 |
finally:
|
| 438 |
self.close_session()
|
486 |
self.close_session()
|
| 439 |
|
487 |
|
| Line 443... |
Line 491... |
| 443 |
|
491 |
|
| 444 |
Parameters:
|
492 |
Parameters:
|
| 445 |
- invoice
|
493 |
- invoice
|
| 446 |
"""
|
494 |
"""
|
| 447 |
try:
|
495 |
try:
|
| 448 |
if Invoice.query.filter_by(supplierId = invoice.supplierId, date = to_py_date(invoice.date), invoiceNumber = invoice.invoiceNumber).all():
|
496 |
if Invoice.query.filter_by(supplierId=invoice.supplierId, date=to_py_date(invoice.date), invoiceNumber=invoice.invoiceNumber).all():
|
| 449 |
raise PurchaseServiceException(ExceptionType.ILLEGAL_ARGUMENTS, "Already received such invoice")
|
497 |
raise PurchaseServiceException(ExceptionType.ILLEGAL_ARGUMENTS, "Already received such invoice")
|
| 450 |
invoiceObj = Invoice()
|
498 |
invoiceObj = Invoice()
|
| 451 |
invoiceObj.invoiceNumber = invoice.invoiceNumber
|
499 |
invoiceObj.invoiceNumber = invoice.invoiceNumber
|
| 452 |
invoiceObj.date = to_py_date(invoice.date)
|
500 |
invoiceObj.date = to_py_date(invoice.date)
|
| 453 |
invoiceObj.receivedFrom = invoice.receivedFrom
|
501 |
invoiceObj.receivedFrom = invoice.receivedFrom
|
| Line 516... |
Line 564... |
| 516 |
'''
|
564 |
'''
|
| 517 |
For getting invoiceNumbers for a Purchase Order
|
565 |
For getting invoiceNumbers for a Purchase Order
|
| 518 |
'''
|
566 |
'''
|
| 519 |
try:
|
567 |
try:
|
| 520 |
|
568 |
|
| 521 |
purchases = Purchase.query.filter_by(purchaseOrder = poNumber)
|
569 |
purchases = Purchase.query.filter_by(purchaseOrder=poNumber)
|
| 522 |
for purchase in purchases:
|
570 |
for purchase in purchases:
|
| 523 |
invoice = purchase.invoiceNumber
|
571 |
invoice = purchase.invoiceNumber
|
| 524 |
except:
|
572 |
except:
|
| 525 |
return None
|
573 |
return None
|
| 526 |
finally:
|
574 |
finally:
|
| Line 529... |
Line 577... |
| 529 |
def createPurchaseReturn(self, t_purchaseReturn):
|
577 |
def createPurchaseReturn(self, t_purchaseReturn):
|
| 530 |
'''
|
578 |
'''
|
| 531 |
For creating a new Purchase Return
|
579 |
For creating a new Purchase Return
|
| 532 |
'''
|
580 |
'''
|
| 533 |
try:
|
581 |
try:
|
| 534 |
purchaseReturn = PurchaseReturn(t_purchaseReturn.vendorId,t_purchaseReturn.amount)
|
582 |
purchaseReturn = PurchaseReturn(t_purchaseReturn.vendorId, t_purchaseReturn.amount)
|
| 535 |
purchaseReturn.vendorId = t_purchaseReturn.vendorId
|
583 |
purchaseReturn.vendorId = t_purchaseReturn.vendorId
|
| 536 |
purchaseReturn.amount = t_purchaseReturn.amount
|
584 |
purchaseReturn.amount = t_purchaseReturn.amount
|
| 537 |
purchaseReturn.returnTimestamp = to_py_date(t_purchaseReturn.returnTimestamp)
|
585 |
purchaseReturn.returnTimestamp = to_py_date(t_purchaseReturn.returnTimestamp)
|
| 538 |
purchaseReturn.isSettled = False
|
586 |
purchaseReturn.isSettled = False
|
| 539 |
session.commit()
|
587 |
session.commit()
|
| Line 547... |
Line 595... |
| 547 |
def getUnsettledPurchaseReturns(self):
|
595 |
def getUnsettledPurchaseReturns(self):
|
| 548 |
'''
|
596 |
'''
|
| 549 |
For getting all unsettled Purchase Returns
|
597 |
For getting all unsettled Purchase Returns
|
| 550 |
'''
|
598 |
'''
|
| 551 |
try:
|
599 |
try:
|
| 552 |
purchaseReturns = PurchaseReturn.query.filter_by(isSettled = False).all()
|
600 |
purchaseReturns = PurchaseReturn.query.filter_by(isSettled=False).all()
|
| 553 |
return [purchasereturn.to_thrift_object() for purchasereturn in purchaseReturns]
|
601 |
return [purchasereturn.to_thrift_object() for purchasereturn in purchaseReturns]
|
| 554 |
except Exception as e:
|
602 |
except Exception as e:
|
| 555 |
print e
|
603 |
print e
|
| 556 |
raise PurchaseServiceException(101, 'Exception while fetching all Unsettled Purchase Returns')
|
604 |
raise PurchaseServiceException(101, 'Exception while fetching all Unsettled Purchase Returns')
|
| 557 |
finally:
|
605 |
finally:
|
| Line 560... |
Line 608... |
| 560 |
def settlePurchaseReturn(self, returnId):
|
608 |
def settlePurchaseReturn(self, returnId):
|
| 561 |
'''
|
609 |
'''
|
| 562 |
For marking a Purchase Return as settled
|
610 |
For marking a Purchase Return as settled
|
| 563 |
'''
|
611 |
'''
|
| 564 |
try:
|
612 |
try:
|
| 565 |
purchaseReturn = PurchaseReturn.query.filter_by(id = returnId).one()
|
613 |
purchaseReturn = PurchaseReturn.query.filter_by(id=returnId).one()
|
| 566 |
purchaseReturn.isSettled = True
|
614 |
purchaseReturn.isSettled = True
|
| 567 |
session.commit()
|
615 |
session.commit()
|
| 568 |
except Exception as e:
|
616 |
except Exception as e:
|
| 569 |
print e
|
617 |
print e
|
| 570 |
raise PurchaseServiceException(101, 'Exception while settling Purchase Return Id : ' + id)
|
618 |
raise PurchaseServiceException(101, 'Exception while settling Purchase Return Id : ' + id)
|
| 571 |
finally:
|
619 |
finally:
|
| 572 |
self.close_session()
|
620 |
self.close_session()
|
| - |
|
621 |
|
| - |
|
622 |
def createPurchaseForOurExtBilling(self, invoiceNumber, unitPrice, itemId):
|
| - |
|
623 |
try:
|
| - |
|
624 |
poId = self.getPOforOurExternalBilling()
|
| - |
|
625 |
self.updatelineItemforOursExternalBilling(poId, itemId, unitPrice)
|
| - |
|
626 |
self.receiveinvoiceforOursExternalBilling(invoiceNumber)
|
| - |
|
627 |
return self.createPurchaseforOursExternalBilling(poId, invoiceNumber)
|
| - |
|
628 |
except Exception as e:
|
| - |
|
629 |
print e
|
| - |
|
630 |
raise PurchaseServiceException(101, '')
|
| - |
|
631 |
finally:
|
| - |
|
632 |
self.close_session()
|
| - |
|
633 |
|
| - |
|
634 |
def fulfillPOForExtBilling(self, itemId, quantity):
|
| - |
|
635 |
poId = self.getPOforOurExternalBilling()
|
| - |
|
636 |
lineItem = LineItem.get_by(purchaseOrder_id=poId, itemId=itemId)
|
| - |
|
637 |
lineItem.unfulfilledQuantity = lineItem.unfulfilledQuantity - 1
|
| - |
|
638 |
if not lineItem.unfulfilledQuantity:
|
| - |
|
639 |
lineItem.fulfilled = 1
|
| - |
|
640 |
session.commit()
|
| 573 |
|
641 |
|
| 574 |
def isAlive(self, ):
|
642 |
def isAlive(self,):
|
| 575 |
"""
|
643 |
"""
|
| 576 |
For checking weather service is active alive or not. It also checks connectivity with database
|
644 |
For checking weather service is active alive or not. It also checks connectivity with database
|
| 577 |
"""
|
645 |
"""
|
| 578 |
try:
|
646 |
try:
|
| 579 |
session.query(Supplier.id).limit(1).all()
|
647 |
session.query(Supplier.id).limit(1).all()
|
| Line 583... |
Line 651... |
| 583 |
finally:
|
651 |
finally:
|
| 584 |
self.close_session()
|
652 |
self.close_session()
|
| 585 |
|
653 |
|
| 586 |
def __get_item_from_master(self, item_id):
|
654 |
def __get_item_from_master(self, item_id):
|
| 587 |
client = CatalogClient("catalog_service_server_host_master", "catalog_service_server_port").get_client()
|
655 |
client = CatalogClient("catalog_service_server_host_master", "catalog_service_server_port").get_client()
|
| 588 |
return client.getItem(item_id)
|
- |
|
| 589 |
|
656 |
return client.getItem(item_id)
|
| - |
|
657 |
|