| Line 429... |
Line 429... |
| 429 |
if scp is not None:
|
429 |
if scp is not None:
|
| 430 |
sourcePercentage = scp
|
430 |
sourcePercentage = scp
|
| 431 |
else:
|
431 |
else:
|
| 432 |
spm = SourcePercentageMaster.get_by(source=OrderSource.SNAPDEAL)
|
432 |
spm = SourcePercentageMaster.get_by(source=OrderSource.SNAPDEAL)
|
| 433 |
sourcePercentage = spm
|
433 |
sourcePercentage = spm
|
| 434 |
snapdealItemInfo = __SnapdealItemInfo(snapdeal_item.supc, snapdeal_item.maxNlc,snapdeal_item.courierCost, it.id, it.product_group, it.brand, it.model_name, it.model_number, it.color, it.weight, category.parent_category_id, it.risky, snapdeal_item.warehouseId, None, runType, parent_category.display_name,sourcePercentage)
|
434 |
snapdealItemInfo = __SnapdealItemInfo(snapdeal_item.supc, snapdeal_item.maxNlc,snapdeal_item.courierCostMarketplace, it.id, it.product_group, it.brand, it.model_name, it.model_number, it.color, it.weight, category.parent_category_id, it.risky, snapdeal_item.warehouseId, None, runType, parent_category.display_name,sourcePercentage)
|
| 435 |
itemInfo.append(snapdealItemInfo)
|
435 |
itemInfo.append(snapdealItemInfo)
|
| 436 |
return itemInfo
|
436 |
return itemInfo
|
| 437 |
|
437 |
|
| 438 |
|
438 |
|
| 439 |
def decideCategory(itemInfo):
|
439 |
def decideCategory(itemInfo):
|
| Line 1579... |
Line 1579... |
| 1579 |
sdItem.sellingPrice = math.ceil(item.proposedSellingPrice)
|
1579 |
sdItem.sellingPrice = math.ceil(item.proposedSellingPrice)
|
| 1580 |
if ((mpItem.pgFee/100)*sdItem.sellingPrice)>=20:
|
1580 |
if ((mpItem.pgFee/100)*sdItem.sellingPrice)>=20:
|
| 1581 |
sdItem.commission = round((mpItem.commission/100+mpItem.pgFee/100)*(sdItem.sellingPrice),2)
|
1581 |
sdItem.commission = round((mpItem.commission/100+mpItem.pgFee/100)*(sdItem.sellingPrice),2)
|
| 1582 |
else:
|
1582 |
else:
|
| 1583 |
sdItem.commission = round((mpItem.commission/100)*(sdItem.sellingPrice),2)+20
|
1583 |
sdItem.commission = round((mpItem.commission/100)*(sdItem.sellingPrice),2)+20
|
| 1584 |
sdItem.serviceTax = round((mpItem.serviceTax/100)*(sdItem.commission+sdItem.courierCost),2)
|
1584 |
sdItem.serviceTax = round((mpItem.serviceTax/100)*(sdItem.commission+sdItem.courierCostMarketplace),2)
|
| 1585 |
sdItem.updatedOn = timestamp
|
1585 |
sdItem.updatedOn = timestamp
|
| 1586 |
sdItem.priceUpdatedBy = 'SYSTEM'
|
1586 |
sdItem.priceUpdatedBy = 'SYSTEM'
|
| 1587 |
mpItem.currentSp = sdItem.sellingPrice
|
1587 |
mpItem.currentSp = sdItem.sellingPrice
|
| 1588 |
mpItem.currentTp = sdItem.transferPrice
|
1588 |
mpItem.currentTp = sdItem.transferPrice
|
| 1589 |
mpItem.minimumPossibleTp = getNewLowestPossibleTp(mpItem,item.ourNlc,vatRate,item.proposedSellingPrice)
|
1589 |
mpItem.minimumPossibleTp = getNewLowestPossibleTp(mpItem,item.ourNlc,vatRate,item.proposedSellingPrice)
|
| Line 1601... |
Line 1601... |
| 1601 |
sdItem.sellingPrice = math.ceil(item.ourSellingPrice+max(10,.01*item.ourSellingPrice))
|
1601 |
sdItem.sellingPrice = math.ceil(item.ourSellingPrice+max(10,.01*item.ourSellingPrice))
|
| 1602 |
if ((mpItem.pgFee/100)*sdItem.sellingPrice)>=20:
|
1602 |
if ((mpItem.pgFee/100)*sdItem.sellingPrice)>=20:
|
| 1603 |
sdItem.commission = round((mpItem.commission/100+mpItem.pgFee/100)*(sdItem.sellingPrice),2)
|
1603 |
sdItem.commission = round((mpItem.commission/100+mpItem.pgFee/100)*(sdItem.sellingPrice),2)
|
| 1604 |
else:
|
1604 |
else:
|
| 1605 |
sdItem.commission = round((mpItem.commission/100)*(sdItem.sellingPrice),2)+20
|
1605 |
sdItem.commission = round((mpItem.commission/100)*(sdItem.sellingPrice),2)+20
|
| 1606 |
sdItem.serviceTax = round((mpItem.serviceTax/100)*(sdItem.commission+sdItem.courierCost),2)
|
1606 |
sdItem.serviceTax = round((mpItem.serviceTax/100)*(sdItem.commission+sdItem.courierCostMarketplace),2)
|
| 1607 |
sdItem.updatedOn = timestamp
|
1607 |
sdItem.updatedOn = timestamp
|
| 1608 |
sdItem.priceUpdatedBy = 'SYSTEM'
|
1608 |
sdItem.priceUpdatedBy = 'SYSTEM'
|
| 1609 |
mpItem.currentSp = sdItem.sellingPrice
|
1609 |
mpItem.currentSp = sdItem.sellingPrice
|
| 1610 |
mpItem.currentTp = sdItem.transferPrice
|
1610 |
mpItem.currentTp = sdItem.transferPrice
|
| 1611 |
mpItem.minimumPossibleTp = getNewLowestPossibleTp(mpItem,item.ourNlc,vatRate,sdItem.sellingPrice)
|
1611 |
mpItem.minimumPossibleTp = getNewLowestPossibleTp(mpItem,item.ourNlc,vatRate,sdItem.sellingPrice)
|
| Line 1656... |
Line 1656... |
| 1656 |
itemHistory.updatedOn = item.updatedOn
|
1656 |
itemHistory.updatedOn = item.updatedOn
|
| 1657 |
itemHistory.maxNlc = item.maxNlc
|
1657 |
itemHistory.maxNlc = item.maxNlc
|
| 1658 |
itemHistory.skuAtSource = item.skuAtSnapdeal
|
1658 |
itemHistory.skuAtSource = item.skuAtSnapdeal
|
| 1659 |
itemHistory.marketPlaceSerialNumber = item.supc
|
1659 |
itemHistory.marketPlaceSerialNumber = item.supc
|
| 1660 |
itemHistory.priceUpdatedBy = item.priceUpdatedBy
|
1660 |
itemHistory.priceUpdatedBy = item.priceUpdatedBy
|
| - |
|
1661 |
itemHistory.courierCostMarketplace = item.courierCostMarketplace
|
| 1661 |
|
1662 |
|
| 1662 |
def markStatusForMarketplaceItems(snapdealItem,marketplaceItem):
|
1663 |
def markStatusForMarketplaceItems(snapdealItem,marketplaceItem):
|
| 1663 |
markUpdatedItem = MarketPlaceItemPrice.query.filter(MarketPlaceItemPrice.item_id==snapdealItem.item_id).filter(MarketPlaceItemPrice.source==marketplaceItem.source).first()
|
1664 |
markUpdatedItem = MarketPlaceItemPrice.query.filter(MarketPlaceItemPrice.item_id==snapdealItem.item_id).filter(MarketPlaceItemPrice.source==marketplaceItem.source).first()
|
| 1664 |
if markUpdatedItem is None:
|
1665 |
if markUpdatedItem is None:
|
| 1665 |
marketPlaceItemPrice = MarketPlaceItemPrice()
|
1666 |
marketPlaceItemPrice = MarketPlaceItemPrice()
|
| Line 1797... |
Line 1798... |
| 1797 |
inHouseCost = 15+vat+(mpItem.returnProvision/100)*proposedSellingPrice+mpItem.otherCost;
|
1798 |
inHouseCost = 15+vat+(mpItem.returnProvision/100)*proposedSellingPrice+mpItem.otherCost;
|
| 1798 |
lowest_possible_tp = nlc+inHouseCost;
|
1799 |
lowest_possible_tp = nlc+inHouseCost;
|
| 1799 |
return round(lowest_possible_tp,2)
|
1800 |
return round(lowest_possible_tp,2)
|
| 1800 |
|
1801 |
|
| 1801 |
def getNewOurTp(mpItem,proposedSellingPrice):
|
1802 |
def getNewOurTp(mpItem,proposedSellingPrice):
|
| 1802 |
ourTp = proposedSellingPrice- proposedSellingPrice*(mpItem.commission/100+mpItem.emiFee/100)*(1+(mpItem.serviceTax/100))-(mpItem.courierCost+mpItem.closingFee)*(1+(mpItem.serviceTax/100))-(max(20,(mpItem.pgFee/100)*proposedSellingPrice)*(1+(mpItem.serviceTax/100)));
|
1803 |
ourTp = proposedSellingPrice- proposedSellingPrice*(mpItem.commission/100+mpItem.emiFee/100)*(1+(mpItem.serviceTax/100))-(mpItem.courierCostMarketplace+mpItem.closingFee)*(1+(mpItem.serviceTax/100))-(max(20,(mpItem.pgFee/100)*proposedSellingPrice)*(1+(mpItem.serviceTax/100)));
|
| 1803 |
return round(ourTp,2)
|
1804 |
return round(ourTp,2)
|
| 1804 |
|
1805 |
|
| 1805 |
def getNewLowestPossibleSp(mpItem,nlc,vatRate):
|
1806 |
def getNewLowestPossibleSp(mpItem,nlc,vatRate):
|
| 1806 |
if (mpItem.pgFee/100)*mpItem.currentSp>=20:
|
1807 |
if (mpItem.pgFee/100)*mpItem.currentSp>=20:
|
| 1807 |
lowestPossibleSp = (nlc+(mpItem.courierCost+mpItem.closingFee)*(1+(mpItem.serviceTax/100))*(1+(vatRate/100))+(15+mpItem.otherCost)*(1+(vatRate)/100))/(1-(mpItem.commission/100+mpItem.emiFee/100+mpItem.pgFee/100)*(1+(mpItem.serviceTax/100))*(1+(vatRate)/100)-(mpItem.returnProvision/100)*(1+(vatRate)/100));
|
1808 |
lowestPossibleSp = (nlc+(mpItem.courierCostMarketplace+mpItem.closingFee)*(1+(mpItem.serviceTax/100))*(1+(vatRate/100))+(15+mpItem.otherCost)*(1+(vatRate)/100))/(1-(mpItem.commission/100+mpItem.emiFee/100+mpItem.pgFee/100)*(1+(mpItem.serviceTax/100))*(1+(vatRate)/100)-(mpItem.returnProvision/100)*(1+(vatRate)/100));
|
| 1808 |
else:
|
1809 |
else:
|
| 1809 |
lowestPossibleSp = (nlc+(mpItem.courierCost+mpItem.closingFee+20)*(1+(mpItem.serviceTax/100))*(1+(vatRate/100))+(15+mpItem.otherCost)*(1+(vatRate)/100))/(1-(mpItem.commission/100+mpItem.emiFee/100)*(1+(mpItem.serviceTax/100))*(1+(vatRate)/100)-(mpItem.returnProvision/100)*(1+(vatRate)/100));
|
1810 |
lowestPossibleSp = (nlc+(mpItem.courierCostMarketplace+mpItem.closingFee+20)*(1+(mpItem.serviceTax/100))*(1+(vatRate/100))+(15+mpItem.otherCost)*(1+(vatRate)/100))/(1-(mpItem.commission/100+mpItem.emiFee/100)*(1+(mpItem.serviceTax/100))*(1+(vatRate)/100)-(mpItem.returnProvision/100)*(1+(vatRate)/100));
|
| 1810 |
return round(lowestPossibleSp,2)
|
1811 |
return round(lowestPossibleSp,2)
|
| 1811 |
|
1812 |
|
| 1812 |
def getLowestPossibleSp(snapdealDetails,val,spm,mpItem):
|
1813 |
def getLowestPossibleSp(snapdealDetails,val,spm,mpItem):
|
| 1813 |
if snapdealDetails.rank==0:
|
1814 |
if snapdealDetails.rank==0:
|
| 1814 |
return mpItem.minimumPossibleSp
|
1815 |
return mpItem.minimumPossibleSp
|
| Line 1818... |
Line 1819... |
| 1818 |
else:
|
1819 |
else:
|
| 1819 |
lowestPossibleSp = (val.nlc+(val.courierCost+mpItem.closingFee+20)*(1+(mpItem.serviceTax/100))*(1+(mpItem.vat/100))+(15+mpItem.otherCost)*(1+(mpItem.vat)/100))/(1-(mpItem.commission/100+mpItem.emiFee/100)*(1+(mpItem.serviceTax/100))*(1+(mpItem.vat)/100)-(mpItem.returnProvision/100)*(1+(mpItem.vat)/100))
|
1820 |
lowestPossibleSp = (val.nlc+(val.courierCost+mpItem.closingFee+20)*(1+(mpItem.serviceTax/100))*(1+(mpItem.vat/100))+(15+mpItem.otherCost)*(1+(mpItem.vat)/100))/(1-(mpItem.commission/100+mpItem.emiFee/100)*(1+(mpItem.serviceTax/100))*(1+(mpItem.vat)/100)-(mpItem.returnProvision/100)*(1+(mpItem.vat)/100))
|
| 1820 |
return round(lowestPossibleSp,2)
|
1821 |
return round(lowestPossibleSp,2)
|
| 1821 |
|
1822 |
|
| 1822 |
def getTargetTp(targetSp,mpItem):
|
1823 |
def getTargetTp(targetSp,mpItem):
|
| 1823 |
targetTp = targetSp- targetSp*(mpItem.commission/100+mpItem.emiFee/100)*(1+(mpItem.serviceTax/100))-(mpItem.courierCost+mpItem.closingFee)*(1+(mpItem.serviceTax/100))-(max(20,(mpItem.pgFee/100)*targetSp)*(1+(mpItem.serviceTax/100)))
|
1824 |
targetTp = targetSp- targetSp*(mpItem.commission/100+mpItem.emiFee/100)*(1+(mpItem.serviceTax/100))-(mpItem.courierCostMarketplace+mpItem.closingFee)*(1+(mpItem.serviceTax/100))-(max(20,(mpItem.pgFee/100)*targetSp)*(1+(mpItem.serviceTax/100)))
|
| 1824 |
return round(targetTp,2)
|
1825 |
return round(targetTp,2)
|
| 1825 |
|
1826 |
|
| 1826 |
def getTargetSp(targetTp,mpItem,ourSp):
|
1827 |
def getTargetSp(targetTp,mpItem,ourSp):
|
| 1827 |
if (ourSp*(mpItem.pgFee/100)) < 20:
|
1828 |
if (ourSp*(mpItem.pgFee/100)) < 20:
|
| 1828 |
targetSp = float(targetTp+(mpItem.courierCost+mpItem.closingFee+20)*(1+(mpItem.serviceTax/100)))/(1-((mpItem.commission/100+mpItem.emiFee/100)*(1+(mpItem.serviceTax/100))))
|
1829 |
targetSp = float(targetTp+(mpItem.courierCostMarketplace+mpItem.closingFee+20)*(1+(mpItem.serviceTax/100)))/(1-((mpItem.commission/100+mpItem.emiFee/100)*(1+(mpItem.serviceTax/100))))
|
| 1829 |
else:
|
1830 |
else:
|
| 1830 |
targetSp = float(targetTp+(mpItem.courierCost+mpItem.closingFee)*(1+(mpItem.serviceTax/100)))/(1-((mpItem.commission/100+mpItem.emiFee/100+mpItem.pgFee/100)*(1+(mpItem.serviceTax/100))))
|
1831 |
targetSp = float(targetTp+(mpItem.courierCostMarkeplace+mpItem.closingFee)*(1+(mpItem.serviceTax/100)))/(1-((mpItem.commission/100+mpItem.emiFee/100+mpItem.pgFee/100)*(1+(mpItem.serviceTax/100))))
|
| 1831 |
return round(targetSp,2)
|
1832 |
return round(targetSp,2)
|
| 1832 |
|
1833 |
|
| 1833 |
def getSalesPotential(lowestOfferPrice,ourNlc):
|
1834 |
def getSalesPotential(lowestOfferPrice,ourNlc):
|
| 1834 |
if lowestOfferPrice - ourNlc < 0:
|
1835 |
if lowestOfferPrice - ourNlc < 0:
|
| 1835 |
return 'HIGH'
|
1836 |
return 'HIGH'
|