public SalesTable createOV()
{
SalesTable salesTable;
AxSalesTable axSalesTable;
CustTable custTable;
SalesLine salesLine;
AxSalesLine axSalesLine;
//Inicializando a partir del cliente
custTable = custTable::find( "NumeroCliente" );
salesTable.CustAccount = "NumeroCliente" ;
salesTable.initFromCustTable();
//Llenando campos nuevos si hubiera en la tabla de ov
salesTable.PurchOrderFormNum = "ReferenciaCliente" ;
salesTable.CampoNuevo1 = "ValorCampoNuevo1" ;
axSalesTable = axSalesTable::newSalesTable(salesTable);
axSalesTable.parmCustAccount( "NumeroCliente" );
axSalesTable.parmSalesType(SalesType::Sales);
axSalesTable.parmDocumentStatus(DocumentStatus::None);
axSalesTable.parmReceiptDateRequested( 30\03\2015 );
axSalesTable.parmShippingDateRequested( 30\03\2015 );
axSalesTable.parmCurrencyCode( "MXN" );
axSalesTable.doSave();
// Esta sección se repite por cuantas líneas tenga la orden
salesLine.clear();
salesLine.initFromSalesTable(_salesTable);
//lenando campos nuevos
salesLine.Cajas = "ValorCampoNuevo2" ;
salesLine.ClaveRechazo = "ValorCampoNuevo3" ;
axSalesLine = null ;
axSalesLine = AxSalesLine::newSalesLine(salesLine);
axSalesLine.parmItemId( "CodigoArticulo" );
axSalesLine.parmSalesQty( 10 );
axSalesLine.parmQtyOrdered( 10 );
axSalesLine.parmSalesUnit( "pza" );
axSalesLine.parmSalesPrice( 18.00 );
axSalesLine.parmLineAmount( 180.00 );
//axSalesLine.parmTaxGroup(lines.TaxGroup); //Si no se llena, toma el del cliente
//axSalesLine.parmTaxItemGroup(lines.TaxItemGroup); //Si no se llena, toma el del artículo
axSalesLine.parmReceiptDateRequested( 30\03\2015 );
axSalesLine.parmShippingDateRequested( 30\03\2015 );
axSalesLine.axInventDim().parmInventSiteId( "100" );
axSalesLine.parmDefaultDimension(this.getDefaultDimension( "valorDimension1" , "valorDimension2" ,"valorDimension3"));
axSalesLine.save();
salesId = salesTable.SalesId;
return salesTable;
}
Y para el DefaultDimension, se tiene el método getDefaultDimension:
static void getDefaultDimension(str _valor1, str _valor2, str valor3)
{
DimensionAttributeValueSetStorage setStorage = new DimensionAttributeValueSetStorage();
DimensionAttribute dimAttribute;
DimensionAttributeValue dimAttrValue;
int idx;
//Aquí van los nombres de las dimensiones de nuestro Ax
container conAttr = [ "REGION", "CEDIS" , "CENTROCOSTO"];
container conValue = [_valor1, _valor2, valor3];
for(idx= 1; idx<=conLen (_dimNames); idx++)
{
dimAttribute = DimensionAttribute::findByName( conPeek(conAttr, idx));
dimAttrValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimAttribute,conPeek(conValue, idx),false,true );
setStorage.addItem(dimAttrValue);
}
return setStorage.save();
}
En los siguientes post viene:
Cómo crear la confirmación y la remisión de una orden de venta.
Cómo cancelar la orden de venta y su remisión.
Post anteriores relacionados:
Cómo crear una orden de compra.
Cómo crear la confirmación y la recepción de una orden de compra.
Cómo cancelar una orden de compra y su recepción.
Y por cierto, acuérdate de darle click a algún anuncio si el post te sirvió de algo.
No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma.
No hay comentarios.:
Publicar un comentario