Price Lists: Advanced Pricing

jmcintyre

Member
We are using advanced pricing to calculate sales order item prices. But we need to be able to create a master price list on a nightly basis to send to external systems and customers for each item/customer group combination. There are 12,000+ items and 13 different customer groups.
Ideally we only want to create list for price changes (change in schedule, adjustment, base price, etc)
Any suggestions?
Thanks,
 
You can turn on the price audit tracking functionality in the Pricing
Constants. Every change is recorded to the appropriate audit file (F4072A,
F4071A, F4070A, etc.).

A true price book report is difficult to create. Future enhancements are
being done to address this in OneWorld.

If you need more, let me know.

Andy Klee
www.JDETips.com
 
Because of the terrible non-modularity of the pricing system code as built into B4200311, it is really hard to separate out the bit that does the pricing. The only way we have found to get item pricing is to call the P4210 Edit line master BSFN, periodically clearing the work file.

This is very slow - a large price list for lots of customers can take hours to process. The upside is that you only have to write a few lines of code and B4200311 does the rest.

Hope that helps,
JohnO
 
Re: RE: Price Lists: Advanced Pricing

Checked out our system and the audit tables (F4071A, etc . ) do not exist nor is there any option on the Price Constant form to set audit tracking on. We are on XE, update 4, SP20 - do we need to apply an ESU or do someting to make this option available?
 
RE: RE: Price Lists: Advanced Pricing

Sorry, that's only in WorldSoftware, not OneWorld.
 
Thanks for the info. I took a look at the MBF and I am a little confused about what needs to be populated in order to calculate the retail price for a specific customer group.
Can you provide some details on what you coded to get the price and what is being inseted into the work files.
Thanks
 
JohnO is correct, the best way to write a Price List report is to call the Sales Master Business function repeatedily for each Item/Branch/Customer/Date combination you need.

I recomend looking at the source code for P4074 (Check Price and Availability) for the parameters to the Edit Line master business function when a price is all that is required. Remember that with advanced pricing you need the item, a customer adressbook number. This function is then called once for every line in your price list. From time to time (say every 200 lines) you also need to call a Delete Work Files business function as well.

Some sophisticated Price-List reports can be created this way, but as John mentioned, they are slow to run.

Regards

Mike
 
Good point. I was thinking about a per customer price list, as the MBF will want a customer's AB number.

No worries though, just suppress the detail and put a level break footer on customer price group and do the pricing there using the last customer address book number. You'll need to join F40071 to your business view to get the Customer Group.

Cheers,
JohnO
 
Re: RE: Price Lists: Advanced Pricing

All,
Why not use the EDI upload table to create a large order with the items you want, cancel the order, but copy the prices before doing so?

Cheers,
--Malcolm.
 
Hi I've made a customer price list UBE based on F4102.
In processing option, I take MCU, AN8 and PEFJ.
Based on that you can call for each item the BSFN PriceCalculateSingle (B4500460) to make a coherent price list based on minimal requirement from F4072.
It takes around 3 minutes for a customer (5000 items)
 
Hi I've made a customer price list UBE based on F4102.
In processing option, I take MCU, AN8 and PEFJ.
Based on that you can call for each item the BSFN PriceCalculateSingle (B4500460) to make a coherent price list based on minimal requirement from F4072.
It takes around 3 minutes for a customer (5000 items)
Hi, Thanks for sharing the details.
We have a use case similar to this in our organization. If would be very helpful, if you can share the developed report. Thanks in advance.
 
Hi, Thanks for sharing the details.
We have a use case similar to this in our organization. If would be very helpful, if you can share the developed report. Thanks in advance.
Hi here is my code, I think that it will help you.
Regards
 

Attachments

  • R56TARIF.txt
    17.6 KB · Views: 11
Hi, apologies if I am missing something but here is my code to caluculate a Sales Price. May not be what you need thought reading this again :)
I just get one price, I don't make a list

Code:
Data Structure: D554108A - GTS Advanced Price DSTR
BF mnIdentifierShortItem [ITM]
BF szCostCenter [MCU]
BF mnAddressNumber [AN8]
BF mnQuantity [QTY]
BF szTransactionUOM [UOM]
BF szPricingUOM [UOM4]
BF jdDatePriceEffectiveDate [PEFJ]
BF mnPricePerUnitUPRC [UPRC]
BF mnAmountExtendedPriceAEXP [AEXP]
BF mnAmtListPricePerUnitLPRC [LPRC]
BF szAgreementNoDMCT [DMCT]
BF mnDifferenceMATH01 [MATH01]


00001  // Object Creation: John Danter 29/04/2014
00002  //
00003  // This BSFN will give back the various pirces an item may have on our system.
00004  // If Adv Prc is not setup the price is the base price
00005  //
00006  //
00007  // Setup defaults
00008  If BF szAgreementNoDMCT [DMCT] is less than or equal to <Blank>
00009  |    BF szAgreementNoDMCT [DMCT] = "ANY"
00010  End If
00011  If BF szPricingUOM [UOM4] is less than or equal to <Blank>
00012  |    BF szPricingUOM [UOM4] = "EA"
00013  End If
00014  If BF szTransactionUOM [UOM] is less than or equal to <Blank>
00015  |    BF szTransactionUOM [UOM] = "EA"
00016  End If
00017  If BF mnQuantity [QTY] is equal to "0"
00018  |    BF mnQuantity [QTY] = "1"
00019  End If
00020  If BF jdDatePriceEffectiveDate [PEFJ] is equal to Null Date
00021  |    BF jdDatePriceEffectiveDate [PEFJ] = SL DateToday
00022  End If
00023  //
00024  //
00025  F4102.FetchSingle  [Index 1: Branch, Item]
            BF mnIdentifierShortItem [ITM] = TK Item Number - Short [ITM]
            BF szCostCenter [MCU] = TK Business Unit [MCU]
            VA evt_LineTypeLNTY [LNTY] <- TK Line Type [LNTY]
00026  //
00027  RetrieveCompanyFromBusUnit(B0000130.RetrieveCompanyFromBusUnit)
            BF szCostCenter [MCU] -> szCostCenter [MCU0]
            VA evt_CompanyCO [CO] <- szCompany [CO]
00028  //
00029  RetrieveCompanyCurrencyCode(B0000128.RetrieveCompanyCurrencyCode)
            VA evt_CompanyCO [CO] -> szCompany [CO]
            VA evt_CurrencyCodeFromCRCD [CRCD] <- szCurrencyCode [CRCD]
00030  //
00031  GetSoldToBillingInstructions(B4200100.GetSoldToBillingInstructions)
            BF mnAddressNumber [AN8] -> mnSoldToAddress [AN8]
            VA evt_PriceAdjustmentScheduleASN [ASN] <- szAdjustmentSchedule [ASN]
            VA evt_GroupCustomerPriceCPGP [CPGP] <- szCustomerPricingGroup [CPGP]
00032  //
00033  //
00034  CalculateSalesPricesAndCosts(B4201500.CalculateSalesPricesAndCosts)
            VA evt_PriceAdjustmentScheduleASN [ASN] -> szAdjustmentSchedule [ASN]
            BF mnAddressNumber [AN8] -> mnAddressNo [AN8]
            BF mnAddressNumber [AN8] -> mnShipToNo [SHAN]
            BF mnIdentifierShortItem [ITM] -> mnShortItemNo [ITM]
            VA evt_CurrencyCodeFromCRCD [CRCD] -> szBaseCurrencyCode [CRDC]
            VA evt_CurrencyCodeFromCRCD [CRCD] -> szCustomerCurrencyCode [CRCD]
            BF mnPricePerUnitUPRC [UPRC] <- mnUnitPrice [UPRC]
            BF mnAmountExtendedPriceAEXP [AEXP] <- mnExtendedPrice [AEXP]
            BF mnAmtListPricePerUnitLPRC [LPRC] <- mnListPrice [LPRC]
            BF szCostCenter [MCU] -> szBranchPlantDtl [MCU]
            VA evt_CompanyCO [CO] -> szCompany [CO]
            BF mnQuantity [QTY] -> mnQtyShipped [SOQS]
            "0" -> mnQtyBackOrdered [SOBK]
            "0" -> mnQtyCanceled [SOCN]
            BF mnQuantity [QTY] -> mnQtyOrdered [UORG]
            BF szTransactionUOM [UOM] -> szTransactionUom [UOM]
            BF szPricingUOM [UOM4] -> szPricingUom [UOM4]
            BF jdDatePriceEffectiveDate [PEFJ] -> jdPriceEffectiveDate [PEFJ]
            VA evt_GroupCustomerPriceCPGP [CPGP] -> szCustomerPricingGroup [PRGP]
            "1" -> cSuppressWriteToWF [EV04]
            "0" -> mnDiscountTrade [TRDC]
            VA evt_LineTypeLNTY [LNTY] -> szLineType [LNTY]
            BF szAgreementNoDMCT [DMCT] -> szAgreementNo [DMCT]
            "1" -> cSuppressCostRetrieval [EV07]
00035  //
00036  //
00037  BF mnDifferenceMATH01 = [BF mnAmountExtendedPriceAEXP]-[BF mnAmtListPricePerUnitLPRC]
00038  //
00039  //
00040  //
 
Back
Top