Subversion Repositories SmartDukaan

Rev

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

Rev 11060 Rev 11099
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'