acumatica
Ajout de la prise en charge d'attributs à une entité de commande client prête à l'emploi
Recherche…
Introduction
Acumatica ERP vous permet de définir des attributs pour une classification flexible et significative d'une entité (éléments principaux, actions / non stockés, etc.) en fonction des besoins spécifiques de votre entreprise. Un attribut est une propriété qui vous permet de spécifier des informations supplémentaires pour les objets du système. Les attributs sont définis dans le contexte d'une classe qui est un regroupement des comptes d'entreprise (y compris les pistes, les opportunités, les clients et les cas), les articles en stock et les articles non stockés par une ou plusieurs de leurs propriétés.
Remarques
Cet exemple est applicable à la série Acumatica 6.0
Cet article fournit des instructions pour ajouter la prise en charge de l'attribut ERP Acumatica à l'entité de commande client prête à l'emploi.
À la base, votre DAC principal d'entité doit avoir une colonne GUID ( NoteID
) pour référencer la table CSAnswers
et doit avoir un champ identifiant la classe de l'entité.
Nous utiliserons le type d' Order Type
pour définir la liste des attributs permettant de collecter des informations spécifiques au type d'ordre.
Créez une extension de graphique pour SOOrderTypeMaint
Graph et déclarez la vue de données pour définir la liste des attributs pour un type de commande particulier. Nous utiliserons CSAttributeGroupList<TEntityClass, TEntity>
public class SOOrderTypeMaintPXExt : PXGraphExtension<SOOrderTypeMaint>
{
[PXViewName(PX.Objects.CR.Messages.Attributes)]
public CSAttributeGroupList<SOOrderType, SOOrder> Mapping;
}
Créez une extension de graphique pour le graphique SOOrderEntry
et déclarez la vue de données pour les attributs spécifiques au type de commande en cours.
public class SOOrderEntryPXExt : PXGraphExtension<SOOrderEntry>
{
public CRAttributeList<SOOrder> Answers;
}
Créez l'extension DAC pour SOOrder
DAC et déclarez le champ défini par l'utilisateur avec l'attribut CRAttributesField
et spécifiez le champ ClassID
- dans notre cas, il s'agit de OrderType
.
public class SOOrderPXExt : PXCacheExtension<SOOrder>
{
#region UsrAttributes
public abstract class usrAttributes : IBqlField { }
[CRAttributesField(typeof(SOOrder.orderType))]
public virtual string[] UsrAttributes { get; set; }
#endregion
}
Modifier la page Order Types
( SO201000
) comme ci-dessous à l'aide du moteur de personnalisation
<px:PXTabItem Text="Attributes">
<Template>
<px:PXGrid runat="server" BorderWidth="0px" Height="150px" SkinID="Details" Width="100%" ID="AttributesGrid"
MatrixMode="True" DataSourceID="ds">
<AutoSize Enabled="True" Container="Window" MinHeight="150" />
<Levels>
<px:PXGridLevel DataMember="Mapping">
<RowTemplate>
<px:PXSelector runat="server" DataField="AttributeID" FilterByAllFields="True" AllowEdit="True"
CommitChanges="True" ID="edAttributeID" /></RowTemplate>
<Columns>
<px:PXGridColumn DataField="AttributeID" Width="81px" AutoCallBack="True" LinkCommand="ShowDetails" />
<px:PXGridColumn DataField="Description" Width="351px" AllowNull="False" />
<px:PXGridColumn DataField="SortOrder" TextAlign="Right" Width="81px" />
<px:PXGridColumn DataField="Required" Type="CheckBox" TextAlign="Center" AllowNull="False" />
<px:PXGridColumn DataField="CSAttribute__IsInternal" Type="CheckBox" TextAlign="Center" AllowNull="True" />
<px:PXGridColumn DataField="ControlType" Type="DropDownList" Width="81px" AllowNull="False" />
<px:PXGridColumn DataField="DefaultValue" RenderEditorText="False" Width="100px" AllowNull="True" />
</Columns>
</px:PXGridLevel>
</Levels>
</px:PXGrid>
</Template>
</px:PXTabItem>
Modifier la page des Sales Orders
SO301000
( SO301000
) comme ci-dessous à l'aide du moteur de personnalisation
<px:PXTabItem Text="Attributes">
<Template>
<px:PXGrid runat="server" ID="PXGridAnswers" Height="200px" SkinID="Inquire"
Width="100%" MatrixMode="True" DataSourceID="ds">
<AutoSize Enabled="True" MinHeight="200" />
<ActionBar>
<Actions>
<Search Enabled="False" />
</Actions>
</ActionBar>
<Mode AllowAddNew="False" AllowDelete="False" AllowColMoving="False" />
<Levels>
<px:PXGridLevel DataMember="Answers">
<Columns>
<px:PXGridColumn TextAlign="Left" DataField="AttributeID" TextField="AttributeID_description"
Width="250px" AllowShowHide="False" />
<px:PXGridColumn Type="CheckBox" TextAlign="Center" DataField="isRequired" Width="80px" />
<px:PXGridColumn DataField="Value" Width="300px" AllowSort="False" AllowShowHide="False" />
</Columns>
</px:PXGridLevel>
</Levels>
</px:PXGrid>
</Template>
</px:PXTabItem>
Télécharger le package de déploiement