Hi All, Today I want to share with you some technology information about how Acumatica Restriction groups works inside Acumatica. For each group system assign one bit in the GroupMask Database column: Group 1 – 0x8000 = 1000 0000 0000 0000 Group 2 – 0x4000 = 0100 0000 0000 0000 Group 3 – 0x2000 = 0010 0000 0000 0000 Group 4 – 0x1000 = 0001 0000 0000 0000 Group 5 – 0x0800 = 0000 1000 0000 0000 Group 6 – 0x0400 = 0000 0100 0000 0000 ….. and so on Here you can see that Acumatica numbers groups using bytes. Each group – one unique bit. To maintain correct security… Read more
Month: August 2016
Configuring Batch Payments for Custom File Format
Hi All, Today I want to share with you an configuration way for new bank format. Out of the box Acumatica supports: ACH and GIRO file types. Support for bank files works through configuration of 3 different components Batch Payments – Process where multiple payments can be combined to one single document. Exactly this document will be exported to payment file. Export scenarios – To generate real file from document Acumatica uses export scenarios with special data provider. Scenario is uses as instruction and columns mapping between file and acumatica. Data Provider – Knows how to generate required file. For different payment standard you may need to create a different… Read more
Extending Contract-Based API Default Endpoint
Hi All! Today, I want to speak with you about Contract-Based Web Services API share with you new cool thing that is available in Acumatica 6 – Extensions of Contracts. Using this feature you can reuse of all benefits of default endpoint that Acumatica provides you out of the box and just extend it with adding couple of fields. OK, let me show you one simple example with 2 changes: Adding one more entity to default endpoint. In my case it will be Country screen. Country is a standard table but the same way you can add all custom screens as well. Adding one more column to Journal Transactions grid.… Read more
PXViewDetailsButton Attribute for better navigation
Hi All, Today want to share with you one new way how you can define navigation in Acumatica version 5.3. From T200 Acumatica Framework Fundamentalist you may know that if you want to map action to any cell in the grid and show it as link you need to define LineCommand: <px:PXGridColumn DataField=”ProductID” Width=”140px” LinkCommand=”ViewProduct” /> But to be able to use it, you should define action, action handler, throw appropriate exception, hide it in data source and so on. Quite log and boring. In Acumatica 5.3 there is a PXViewDetailsButtonAttribute that can do all these things for you. [PXViewDetailsButton(typeof(Contact),typeof(Select<Contact, Where<Contact.contactID, Equal<Current<CROpportunity.contactID>>>>))] [PXViewDetailsButton(typeof(BAccount),typeof(Select<BAccount, Where<BAccount.ccbAccountID, Equal<Current<CROpportunity.customerID>>>>))] public PXSelectReadonly<CROpportunit> Opportunities; This attribute will… Read more
Sync files from Acumatica to FTP server
Hi Everyone, In Acumatica for every file you have in the database you may enable exporting or importing it to several supported protocols: Shared Folder FTP HTTP * Unfortunately HTTP protocol is supported only for downloading. Today I want to share with you configuration and usage flow of file synchronizations based on File Transfer Protocol (FTP). Please be sure you have one if you want to complete this exercise. All acumatica files should be attached to one or multiple entities. So you can find files attached to one particular document/line or you also can use search in files screen: If you select single file will be able to see some… Read more
Cool ways to use PXFormula
Hi All, Acumatica platform continuously evolving and includes more and more new cool features to optimize your code and save time on development and testing. Today i want to share with you some really cool features of PXFormula attribute and how to use it to significantly simplify your cod Here I want to cover following parameters: Validate – Validate<field> Current – Current<TRecord.field> Parent – Parent<TParent.field> IsTableEmpty – IsTableEmpty<TRecord> Selector – Selector<KeyField, ForeignOperand> Welcome in details if you need examples. Validate The Validate<field> formula will raise dependentField’s FieldVerifying event each time the RelatedField is updated. Example: public class DacClass: PX.Data.IBqlTable { public abstract class field : IBqlField { } public virtual int? Field { get; set; } public abstract class dependentField : IBqlField { } [PXFormula(typeof(Validate<field>))] public virtual int? DependentField… Read more
Using of PXRestrictorAttribute
Hi All, Today I want to speak with you about PXRestrictorAttribute usage and examples. Lets start with PXSelector, as they are lies together. The PXSelectorAttribute attribute is required for selecting some dependent data. Also selector maintain consistency and checks that referred data exists and meets required conditions. However from development stand point it has two major drawbacks: It gives the uninformative message <object_name> cannot be found in the system if a record with a given key does not meet the selector condition. When you change other fields of the object, the selector incorrectly gives the same message if the object referenced by the selector has changed and no longer meets the condition… Read more
Passing parameters from UI to PXSelectorAttribute
Hi All, Today I want to speak with you about passing UI parameters to the server code and PXSelector attribute. Lets assume that you have some document (like AR Invoice), where you have 2 keys: document type and document number. If you want to add reference to the this document for other screen (like payment), you need to have 2 selectors, that are depend on each other. In this example we have a selector that depend on MultiPaymentInvoice.invoiceType. But how to correctly define this dependency. Here I want to describe 3 ways to archive it: Current Parameter with Sync Position Current Parameter with SyncGrid Paramenter Optional Parameter with Control Parameter Lets… Read more