Absolute value discount in Special Prices

I have a customer that has special prices with a value discount, not a percentage one.
I thought about adding a UDF to the Special Prices table and do a formatted search against it, but later I found that I cannot add an UDF to the Special Prices table...
All the discount functionality in SBO is percentage based...how should I implement an absolute value discount?
Any ideas will be much appreciated...

Hi.
This is sample code in C++ to add UDF.
_bstr_t TableName = L"TableUID";
_bstr_t FieldName;
HRESULT hr;
SAPbobsCOM::IUserFieldsMDPtr m_pUserFieldsMD = m_Cmp->GetBusinessObject( SAPbobsCOM::oUserFields );
m_pUserFieldsMD->PutTableName(TableName);
FieldName = L"FieldUID";   'without U_'
m_pUserFieldsMD->PutType(SAPbobsCOM::db_Alpha);
m_pUserFieldsMD->PutName( FieldName );
m_pUserFieldsMD->PutDescription( L"desc");          
m_pUserFieldsMD->PutSize(20);
m_pUserFieldsMD->PutEditSize(20);
if ( m_pUserFieldsMD == NULL )
return -1;
m_Cmp->StartTransaction();
hr = m_pUserFieldsMD->Add();
if (hr!=S_OK)
'error'
if ( m_Cmp->InTransaction )
m_Cmp->EndTransaction( SAPbobsCOM::wf_Commit );
Hope it helps.
Kamil Wydra

Similar Messages

  • Special Price + Formatted Search for Special Price.

    Hi all,
    Appreciate some help here.  Our client is using SAP B1 2007 Patch 38.  AU/NZ localization, Local Currency = AUD.
    Scenario:
    Item A, Price List 1 = $2795, Price List display = 4 decimals, Price List Currency = USD
    Special price for Item A has been set up as follows:
    Step 1 - Go to Item> Price List> Price and Volumne Discount
    Step 2 - The price and volumn discount screen opened. From the drop down, select price list and then select Item A by double clicking the line.
    Step 3 - Period Discount screen opened.  Valid from = 9th July 2008. Price = $2795.
    Step 4 - Double click the line, Volume Discount Price List open, with the following details maintained.
    Quantity=1, Discount=0, Special Price = $2795.
    Quantity = 10, Discount=7.1556, Special Price = $ 2595.0010
    Quantity = 100, Discount=10.0179, Special Price=$ 2514.9997
    Question:  we intend to put in Special price = $2595 and $2515, but SAP just does its own round up.  Is there a way to work around?
    Scenario 2:
    To deal with the problem from Question 1, we have created a formatted search in the sales order and formatted search to round up the value in Line Total.
    Column = Line Total
    Trigger by = Quantity
    Query = SELECT (case when $[$63.0.0]='USD' then Round($[$38.23.number],0) else $[$38.23.number] end)
    Column = Quantity
    Trigger by = Discount%
    Query = SELECT $[$38.11.1]
    The above set up works fine, if the user enter the quantity correctly the first time. 
    Eg:
    User enter Qty = 10, SAP will display Discount = 7.1556 % and Line Total = $25,950.00 (Round up from $25950.01).
    If user notice the quantity is wrong and then enter new quantity = 100, the discount remains at 7.1556%, it should be 10.0179%.
    Question: Is there a way to work around this?

    Hi Shawn ,
    1.First check the decimal setting
    a.Administration --> system intilisation --Document setting -- currency or by document --
    b.System initiliaisation ---> general settng --->Display
    c.Administration set up->Financial currency ---rounding --???
    Currency setting overides the rounding method of procedure B
    Scenario2
    Since your trigger is dicount percentage , You will not get the desired output from the formatted search . Try to get the trigger at quantity .
    Hope that helps
    Bishal

  • Adding special prices to items query.

    Hi, I'm just wondering if anybody can help me work out how to add special prices to items on a volume basis. say if i sold one item there would be no discount but if i sold 10 then i would automatically want a 5% discount to be given, I've had a look around and nothing seems to be popping out at me, i want the discount given to all customers also.
    many thanks.

    Dear RW,
    Choose  Inventory ->Price Lists ->Special Prices ->Special Prices for Business Partners
    To define the special price of an item for a business partner, in the Special Prices for Business Partners window, enter the required business partner and item information
    To open the Period Discounts window, in the # column, double-click a row . Enter the required dates, price list, discount, and price and choose the Update button
    To save the modified special prices, in the Special Prices for Business Partners window, choose the Update button
    If no date-dependent special price has been defined for an item, SAP Business One assumes that the customer-specific special price has been valid since the date on which it was added. The special price with the appropriate valid-from date appears in the first row.
    Defining Quantity-Based Special Prices for a Business Partner
    Choose  Inventory -> Price Lists -> Special Prices  -> Special Prices for Business Partners .
    The Special Prices for Business Partners window appears.
    To open the Period Discounts window, in the # column, double-click a row . Enter the required dates, price list, discount, and price.
    In the Period Discounts window, double-click a price-list row to open the Special Prices - Volume Discounts window, and enter the quantity, discount, and special price.
    After you enter or change the price, SAP Business One automatically calculates the discount according to the difference between quantity-based and the date-dependent special price.
    To confirm your entries, choose the Update button in the Special Prices - Volume Discounts window and the Period Discounts window.
    To save the modified special prices, choose Update in the Special Prices for Business Partners window.
    To define quantity-based special prices, you do not have to define a date dependency in addition to the SAP Business One default one. You can also define quantity-based special prices directly, based on the special price for the business partner
    Regards,
    Sarkar R

  • Cash Discount in absolute value, not in %

    Hello Friends,
    I have a scenario with respect to terms of payment, where the customer is entitled for a cash discount of Rs.100 per unit if the invoice is cleared within 7 days from the date of invoice, Rs.75 per unit within 14 days & Rs.50 per unit within 21 days with total credit period of 45 days.
    The problem I'm facing is that in the Terms of Payment configuration (transaction code OBB8), I'm able to store the cash discount in % and not in absolute value (field "percentage" under the "Payment Terms" heading in tcode OBB8).
    Request your suggestion at the earliest.
    Thnx & Rgds,
    Padmanabhan

    Hi,
    The CASH DISCOUNT will be given based on the Payment terms  with the CONDITION TYPE.
    In the Standard the CASH DISCOUNT condition types are SKTO & SKTV.
    If you are using the same condition types, change the CALCULATION TYPE  for these condition types in V/06  to B ( which is fixed amount)  and try.
    Hope it will solve your requirement.
    regards,
    santosh

  • Discount Group and Special Prices

    Hello Everyone
    I have a scenario where by the discount given in both Discount Group and Special Prices needs to work in conjunction.Now at the moment if i give it in both discount group and Special Prices for BP,only Special Price discount is being picked up ie its given precedence over Discount Group.Is there any setting that i need to change to make this work.I have to show the difference in discount elsewhere,so only i need to map this in both discount group and special prices.
    Thanks and regards
    Raghu

    hi raghu ram,
    Check the wiki page in this link
    How is the default item unit price determined in marketing documents?
    https://www.sdn.sap.com/irj/scn/wiki?path=/pages/viewpage.action&pageid=29524391
    Hope it will solve problem.
    Jeyakanthan

  • Special prices - Group discount

    Hi
    There are special prices defined for certain customers. A special price discount were defined for a certain period which ended at the end of Sept 2010. Previously a group discount of 10% was defined for this customer. Now that the period discount expired, the special price dicount should revert back to the group discount of 10%  but it doesn't. It just pulls through the normal price as per the price list assigned to the BP.
    I deleted the period discount line in the period discount window even though the period expired but no luck.
    I couldn't find any notes on the subject so has anyone got a solution for me?
    The version is 2007A PL 44
    Regards
    Danie

    Hi
    After much testing it seems that the system handles it in the following manner -
    If the item exists in the window for 'Special prices' - which is the highest level, and even if the disc % is zero, no further checking is done - even though a disc exists in a lower level, in this case 'Group Discounts'.
    When you delete the item from the 'Special Prices' window, the discount defined for 'Groups' pulls through.
    This is the case in 2007 PL44 and also in 8.8 PL11 so I suppose it's just the way SBO handles special prices.
    This may be ok for companies with few bp's and items, but for my client with many bp's and huge warehouses, maintaining special prices is a huge problem.
    Regards

  • Special Prices for BP Period Discounts

    Hi all
    Is it possible to mass import Special Prices for BP Period Discounts for all Customers and Items?
    Kedalene Chong

    Hi,
    How many records you want import?
    If more than thousand records, you need to split the records into 1000 records to import correctly.
    Check SAP notes:
    928625
    - DTW_How to import/update Special Prices via DTW
    Thanks & Regards,
    Nagarajan

  • Prices on invoices not mantained - Discounts - Special Prices

    Hello everybody,
    I'm developing with SBO2005 A PL7 and DI API.
    I have this problem with an our addon that generates invoices.
    If I set this properties:
    .Lines.Price = X
    .Lines.DiscountPercent = Y
    and I have Stock Management - Price Lists - Special Prices - Discount Groups setted for this customer,
    the price X comes mantained ok, but the DiscountPercent Y comes overwritten on this instruction:
    objInvoice.Add as if it takes another PriceList.
    Do you know why?
    How can I set this field AR/Invoice - Form Settings  - Price List (for the document)?
    Thank you
    Andy

    I intended the field Price List field in [Form 998, Item = 31, Variable = 2, OCTG.ListNum]
    Thank you again

  • On Net value: Discount Condition Type

    Hi,
    I would like to know whether the below requirement can be fulfilled with the standard SD configuration.
    As far as I know all discount condition types calculates on Gross value. But I have a discount condition type (lets say 123 = Special Discount) which should calculate based on Net value. I can create a step after Netvalue but the problem I see is, how the system calculates Output tax
    eg.
    10 PR00
    20 ABC  (Customer discount)
    30 XYZ  (Material discount)
    40 Discount Sum
    50 Net Value
    60 123 (Special Discount)
    70 MWST (output tax)
    So if I place discount type 123 after Net value, I think it will calculate on net value, but the problem might come with MWST as it cant calculates on Netvalue but on 123. Am I right?  I knew it can be done with the ABAPer help. But I would like to know whether it can be done with standard (alrady predefined) SAP configuration. (by assigning any routine or some settings in Pricing procedure determination in V/08 ???)
    Thank you.

    Hi santosh
    Sub total will the PR00 - Discount sum
    Net price will be Sub total - Special discount
    how do I mention that sub total will be PR00 - Discount. I configure like this
    10 PR00
    20 ABC (Customer discount)
    30 XYZ (Material discount)
    40 Discount Sum                      from20    to39
    50 Sub total                             
    60 123 (Special Discount)
    70 Net price
    80 MWST (output tax)
    90 Total
    when I indicate from 20 to 39 besides Discount Sum, system will sum the discounts between step 20 to 39. How do I write at sub total like this, so that system will deduct the discount sum from PR00. Similary how do I write Sub total - Special discount.
    Could you please explain bit more detail.
    Thank you.

  • Special Prices

    Hi All,
    I need some assistance with a query to simulate how B1 would choose Prices for a specific customer for a UDF.
    It would need to check special prices for BP's, period and volume discounts, and if nothing, then return the value to the default price list assigned to the BP.
    Thanks in advance.
    Regards,
    Kiran

    Hi,
    SELECT O0.DOCDATE , N1.SERIESNAME + LTRIM(STR(O0.DOCNUM)) AS DOCNUM , O0.CARDNAME , P0.ListName ,
    I0.ITEMNAME , O1.QUANTITY , O1.PRICE AS [SPECIAL PRICE] , I1.Price AS [SALE PRICE]
    FROM ORDR O0 INNER JOIN RDR1 O1 ON O0.DocEntry = O1.DocEntry
    INNER JOIN NNM1 N1 ON N1.Series = O0.Series
    INNER JOIN OITM I0 ON I0.ItemCode = O1.ItemCode
    INNER JOIN ITM1 I1 ON I0.ItemCode = I1.ItemCode
    INNER JOIN OCRD C0 ON C0.CardCode = O0.CardCode
    INNER JOIN OPLN P0 ON P0.ListNum = C0.ListNum AND I1.PriceList = C0.ListNum
    WHERE O0.DocDate >= '01/OCT/2011' AND O0.DocDate <= '31/OCT/2011'AND O1.SHIPDATE >= '01/OCT/2011' AND O1.SHIPDATE <= '31/OCT/2011'
    AND I1.PRICE <>  O1.PRICE AND I0.QryGroup64 = 'Y'
    AND C0.GroupCode IN (102, 104, 105)
    ORDER BY O0.DocDate
    We have framed this query only for a specific group of customers.
    If you want to run this for all your customers then alter the criteria for groupcode.
    Thanks
    Malhaar

  • Condition Record for Special Price to First 10 customers

    Hello All
    there is a requirement from real estate client that they want to charge a special price to the first 10 customers purchasing their residential flat.Sale part is being handled thru SD only. Flats are created as Material master. Now as n number of Flats are created. So, thru Standard functionality, special price is required for first 10 customers who purchases these flats.
    Thanks
    Deepak Mehmi

    Hello Deepak,
    I think you are missing something. first of all let me tell you what is maxcond base value .
    Maximum condition value
    Specifies the maximum condition value for this condition record.
    Use
    You use this field to limit the use of a particular condition record to a specified total value.
    Example
    You offer a customer a special discount on a certain product but want to limit this discount to a specified total amount. You enter the maximum amount (for example, 1000 USD) in this field. As you process orders that use this condition record, the system updates the cumulative value. When the maximum value is reached, the system automatically deactivates the condition record in subsequent orders. In your case you decided to sell first 10 flats @ 100000 Rs, means total 10 lakhs
    Mention this value here.
    Once you mention this and start selling your flats, and system monitors this value, and soon as it reaches 10 lakhs, it will stop giving the discount to the customer. This is a control other than the no: of orders , it means you have here second control to control no: of orders, by no: wise and by value wise. I think you got what I mean.
    Now coming back to your question :
    as, for 11th order, the required price is different (e.g. Rs 2000 after 10th SO), where i'll maintain condition record with value Rs. 2000. ?
    You have to maintain standard price in PR00 and any discounts should go for respective discount types and in your case it should be K004 condition type by going to VK12.
    Again now please maintain max.condition value in K004 by ticking condition update at V/06 and coming back to vk12, selecting k004, and maintain your discounts, maxcondition value , no: of orders required etc. and save it.
    I have repeted this in my sandbox this for you and got it right, then why not you. try it again, you will get it. Do it right.
    All the best.
    Sridhar.
    Note
    To see the current cumulative value for a particular condition record, you select Details -> Cumulative values in the overview screen of the condition record.

  • Special Prices for "SALE" period.

    Dear SD pricing experts,
    We seek a suggestion for a pretty common scenario wherein  when we have a SALE period -- by definition it could mean special prices for SOME of the regular items -- maybe old arrivals / improper condition of the item hence devalued but still perfectly usable, for a specific period. However for the same period, some items (quantities) of the same, which are in brand new condition, would be available for sale at the regular price.
    How can one handle this in the SAP SD pricing or related. This should be such that only the right material goes at the right price and not the GOOD material at the SALE price.
    Please note there is no separate identification' of the "devalued" items. e.g. cloth items, or cosmetic items which have lost their packaging and likewise.
    Look forward to a valuable solution to this.
    Regards,
    Tariq

    Hi,
    It is understood that you want to give special prices for certain items. The special prices can be given through discount condition  K007.
    1.     Create a condition table that includes u2018Order reasonu2019 as one of the fields. Say, the condition table includes Sales organization, Distribution channel, Division and Order reason. Say, the condition table is 650.
    2.     Create an access sequence Z001 u2013 Discount for SALE period; this access sequence has the condition table 650.
    3.     Enter this access sequence in condition type K007.
    4.     Create order reason as 101-Sale period dis A, 102-Sale period dis B, 103-Sale period dis C [Menu path: Spro >> SD >>Sales >> Sales docu header >> Define order reason]
    5.     Maintain condition record for K007 in VK11. Maintain different discounts for different order reason.
    6.     Create a sales order. If the material is eligible for discount, select the order reason [eg; 101]. The respective discount will be reflected.
    7.     The condition record is controlled by the u2018from- tou2019 validity period.
    8.     If you need to reflect the discounted price in the price PR00 itself, assign this access sequence in the condition type PR00 and maintain different prices for different order reason. You will get PR00 value directly.
    Hope this information will be useful to you.
    Regards,
    K Bharathi

  • DI API: 2005A PL: 08  Special Prices

    Hi everyone,
    I am using the DI-Object SpecialPrices for adding a special price in the Database. We use a German MSSQL Server 2000 and VB.Net (1.1)
    My Code:
    Public Sub PreislisteZwischenspeichernLöschenUndSetzen()
                'Dim oPreisliste As SAPbobsCOM.PriceLists
                Dim oSonderpreisliste As SAPbobsCOM.SpecialPrices
                Dim oSonderpreislisteDataArea As SAPbobsCOM.SpecialPricesDataAreas
                Dim oSonderpreislisteQuantityArea As SAPbobsCOM.SpecialPricesQuantityAreas
                Dim oSBOB As SAPbobsCOM.SBObob
                oSBOB = oCibAddOn.oCompany.GetBusinessObject(BoObjectTypes.BoBridge)
                'oPreisliste = oCibAddOn.oCompany.GetBusinessObject(BoObjectTypes.oPriceLists)
                oSonderpreisliste = oCibAddOn.oCompany.GetBusinessObject(BoObjectTypes.oSpecialPrices)
                ' Staffelpreisliste neu eingeben
                ' Wichtig, Standardpreis muss in der Preisliste unter ITM1 eingegeben sein
                Dim oArtikelPreis As SAPbobsCOM.Items
                Dim oArtikelPreise As SAPbobsCOM.Items_Prices
                oArtikelPreis = oCibAddOn.oCompany.GetBusinessObject(BoObjectTypes.oItems)
                oArtikelPreis.GetByKey("9999")
                Dim intIndex As Integer = 0
                Dim blExit As Boolean = False
                Do While blExit = False And intIndex < oArtikelPreis.PriceList.Count
                    oArtikelPreis.PriceList.SetCurrentLine(intIndex)
                    If oArtikelPreis.PriceList.PriceList = 1 Then
                        oArtikelPreis.PriceList.Currency = "EUR"
                        oArtikelPreis.PriceList.Price = 12.5
                        If oArtikelPreis.Update() <> 0 Then
                            MsgBox(oCibAddOn.oCompany.GetLastErrorDescription)
                        End If
                        blExit = True
                    End If
                    intIndex += 1
                Loop
                oSonderpreisliste.CardCode = "70000"
                oSonderpreisliste.ItemCode = "9999"
                oSonderpreisliste.Currency = "EUR"
                oSonderpreisliste.Price = 12.5
                oSonderpreisliste.PriceListNum = 1
                oSonderpreisliste.SpecialPricesDataAreas.SetCurrentLine(0)
                oSonderpreisliste.SpecialPricesDataAreas.AutoUpdate = BoYesNoEnum.tYES
                oSonderpreisliste.SpecialPricesDataAreas.DateFrom = New System.DateTime(2006, 4, 26)
                oSonderpreisliste.SpecialPricesDataAreas.Dateto = New System.DateTime(2006, 4, 28)
                oSonderpreisliste.SpecialPricesDataAreas.PriceCurrency = "EUR"
                oSonderpreisliste.SpecialPricesDataAreas.PriceListNo = 1
                oSonderpreisliste.SpecialPricesDataAreas.SpecialPrice = 12.5
                oSonderpreisliste.SpecialPricesDataAreas.Add()
                oSonderpreisliste.SpecialPricesDataAreas.SpecialPricesQuantityAreas.SetCurrentLine(0)
                oSonderpreisliste.SpecialPricesDataAreas.SpecialPricesQuantityAreas.PriceCurrency = "EUR"
                oSonderpreisliste.SpecialPricesDataAreas.SpecialPricesQuantityAreas.Quantity = 1
                oSonderpreisliste.SpecialPricesDataAreas.SpecialPricesQuantityAreas.SpecialPrice = 12.5
                oSonderpreisliste.SpecialPricesDataAreas.SpecialPricesQuantityAreas.Add()
                oSonderpreisliste.SpecialPricesDataAreas.SpecialPricesQuantityAreas.SetCurrentLine(1)
                oSonderpreisliste.SpecialPricesDataAreas.SpecialPricesQuantityAreas.PriceCurrency = "EUR"
                oSonderpreisliste.SpecialPricesDataAreas.SpecialPricesQuantityAreas.Quantity = 100
                oSonderpreisliste.SpecialPricesDataAreas.SpecialPricesQuantityAreas.SpecialPrice = 10
                oSonderpreisliste.SpecialPricesDataAreas.SpecialPricesQuantityAreas.Add()
                oSonderpreisliste.SpecialPricesDataAreas.SpecialPricesQuantityAreas.SetCurrentLine(2)
                oSonderpreisliste.SpecialPricesDataAreas.SpecialPricesQuantityAreas.PriceCurrency = "EUR"
                oSonderpreisliste.SpecialPricesDataAreas.SpecialPricesQuantityAreas.Quantity = 1000
                oSonderpreisliste.SpecialPricesDataAreas.SpecialPricesQuantityAreas.SpecialPrice = 7.5
                oSonderpreisliste.SpecialPricesDataAreas.SpecialPricesQuantityAreas.Add()
                If oSonderpreisliste.Add <> 0 Then
                    MsgBox(oCibAddOn.oCompany.GetLastErrorCode)
                    MsgBox(oCibAddOn.oCompany.GetLastErrorDescription)
                End If
                System.Windows.Forms.Application.Exit()
            End Sub
    We get all the time the errormessage: Date is out of range.
    We also try to use the functions SaveAsXML and GetBusinessObjectFromXML, but then the same error comes.
    Trinidad wrote a lot of time that the error is solved in the Version 2005, but it isn`t so for us.
    Please help
    Regards
    Jörn

    Sorry for the double post; I thought I would be better showing how my code goes.
    As with the original poster, I am using the DI-object Special Prices to insert new records. I am trying to create a Special Price that is BP-Item specific, using the default demo company (SBO Demo UK), valid date from 15 Jun to 20 Jun.
    Dim oSpecialPrices As SpecialPrices = oCompany.GetBusinessObject(BoObjectTypes.oSpecialPrices)
    Dim oSpecialPricesDataAreas As SpecialPricesDataAreas = oSpecialPrices.SpecialPricesDataAreas
    ' SpecialPrices settings
    oSpecialPrices.ItemCode = "A1000"
    oSpecialPrices.CardCode = "C1000"
    oSpecialPrices.AutoUpdate = BoYesNoEnum.tYES
    oSpecialPrices.PriceListNum = 3
    oSpecialPrices.DiscountPercent = 50
    ' ------------------ START ------------------
    ' SpecialPricesDataAreas settings
    oSpecialPricesDataAreas.SetCurrentLine(0)
    oSpecialPricesDataAreas.DateFrom = New DateTime(2006, 6, 15)
    oSpecialPricesDataAreas.Dateto = New DateTime(2006, 6, 20)
    oSpecialPricesDataAreas.AutoUpdate = BoYesNoEnum.tYES
    oSpecialPricesDataAreas.Discount = 15
    oSpecialPricesDataAreas.PriceListNo = oSpecialPrices.PriceListNum
    oSpecialPricesDataAreas.PriceCurrency = "GBP"
    oSpecialPricesDataAreas.Add()
    ' ------------------- END -------------------
    ' Adding and checking for any errors
    oSpecialPrices.Add()
    oCompany.GetLastError(lErrCode, sErrMsg)
    If lErrCode <> 0 Then
        MsgBox(lErrCode & ": " & sErrMsg)
    End If
    If the portion of the code between START and END was commented out the insertion was successful. Else as it is, it will keep prompting Invalid Date Range (-10).
    Can anyone please shower some enlightenment?

  • Price and special price

    Hello
    My question is about special price and depending on the last price a discount applies
    Example discount 10%
    Customer A no special price for article B 100 so with discount it'll be 90
    Customer B special price for article B 70 so with discount it'll be 63
    Thanks

    You can use the Special Price for BP's

  • Special Price Management

    Forum,
    I would like some advice on the best way to handle special prices in "Period and volume discount" currently we have a couple of thousand items in this aera, but only a couple of hundred that are needed. i would like my colleagues (who enter the special prices) to manage this better i.e. when an item is not on special offer (or is not a bulk buy item) for them to remove from this list.  can you let me know what other companys do to manage this area. and if there is an easy way to manage this better.
    Regards,
    Juan

    Would anyone on the forum be able to assist?
    Regards,
    Juan

Maybe you are looking for