on 09-02-2011 6:13 PM
Que tal buenos dias a todos,
El presente para solicitar su apoyo sobre una duda que tenemos en cuanto al SDK.
En especifico lo que deseamos realizar es mediante el SDK ingresar una entrada de mercancias OP basada en una Orden de Compra, pero no encontramos la propiedad en el SDK para hacer referencia a la Orden de Compra.
Anexo el ejemplo que estamos realizando.
De antemano les agradezco el apoyo y su tiempo.
iDisp := oCompany.GetBusinessObject(oPurchaseDeliveryNotes);
iDisp.QueryInterface(IID_IDocuments, vEntradas);
vEntradas.CardCode := 'P00001';
vEntradas.NumAtCard := 'GO11000280';
vEntradas.Series := DM.B1Series.FieldByName('Series').AsInteger;
vEntradas.SeriesString := 'GO';
vEntradas.DocDate := EncodeDate(2011,08,31);
vEntradas.Lines.WarehouseCode := '020';
vEntradas.Lines.ItemCode := '53212013';
vEntradas.Lines.Quantity := 1;
vEntradas.Lines.PriceAfterVAT := 11.6;
vEntradas.Lines.BaseEntry := 17;
vEntradas.Lines.BaseType := 22;
vEntradas.Lines.BaseEntry := 83;
vEntradas.Lines.BaseLine := 1;
vEntradas.Lines.Add;
vEntradas.Lines.WarehouseCode := '020';
vEntradas.Lines.ItemCode := '10000151';
vEntradas.Lines.Quantity := 2;
vEntradas.Lines.PriceAfterVAT := 1.16;
vEntradas.Lines.BaseEntry := 17;
vEntradas.Lines.BaseType := 22;
vEntradas.Lines.BaseEntry := 83;
vEntradas.Lines.BaseLine := 2;
RetVal := vEntradas.Add;
If RetVal <> 0 Then
begin
oCompany.GetLastError(ErrCode, ErrMsg);
MessageDlg('Error Code: 'IntToStr(ErrCode)#13#10'Error Msg: '+ErrMsg, mtWarning, [mbOK], 0);
End;
Saludos Cordiales...
La referencia a la OC ya la estas haciendo, quiza te preguntas porque la OC no se cierra?
Si es asi revisa este post
Saludos
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Necesitas BaseEntry para indicarle el docentry de la Orden de compra que cerraras, y la de baseline, para indicarle que linea de la OC estas recibiendo
AMbas son public
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Que tal Mauricio gracias por tu respuesta.
Pero te comento que en el ejemplo que postee si hago referencia al BaseEntry = 83 donde el 83 es mi Orden de Compra
y el BaseLine es a la fila 1
iDisp := oCompany.GetBusinessObject(oPurchaseDeliveryNotes);
iDisp.QueryInterface(IID_IDocuments, vEntradas);
vEntradas.CardCode := 'P00001';
vEntradas.NumAtCard := 'GO11000280';
vEntradas.Series := DM.B1Series.FieldByName('Series').AsInteger;
vEntradas.SeriesString := 'GO';
vEntradas.DocDate := EncodeDate(2011,08,31);
vEntradas.Lines.WarehouseCode := '020';
vEntradas.Lines.ItemCode := '53212013';
vEntradas.Lines.Quantity := 1;
vEntradas.Lines.PriceAfterVAT := 11.6;
vEntradas.Lines.BaseType := 22;
vEntradas.Lines.BaseEntry := 83;
vEntradas.Lines.BaseLine := 1;
vEntradas.Lines.Add;
Nuevamente te doy las gracias y espero me puedas comentar que otra funcion me falta.
Hola Mauricio
Molestandote de nuevo podrias ayudarme con la siguiente pregunta:
Este es el Escenario
Tengo una Orden de Compra del Articulo A001 con la cantidad de 10 piezas
Posteriormente hice una entreda de Mercancia con refencia a esa OC por el mismo articulo A001 con la cantidad de 10 piezas
Pero deseo hacer una devolucion del articulo A001 por la cantidad de 5 pieza.
Podrias ayudarme diciendome en que campo debe indicarle que me vuelva abrir la OC por esos 5 que devolvieron
Este es el codigo que estamos manejando
vDevolucionE.CardCode := 'P00001';
vDevolucionE.NumAtCard := 'GO11000325';
vDevolucionE.Series := DM.B1Series.FieldByName('Series').AsInteger;
vDevolucionE.SeriesString := 'GO';
vDevolucionE.DocDate := EncodeDate(2011,09,02);
vDevolucionE.Lines.WarehouseCode := '020';
vDevolucionE.Lines.ItemCode := '53212013';
vDevolucionE.Lines.Quantity := 2;
vDevolucionE.Lines.PriceAfterVAT := 11.6;
vDevolucionE.Lines.BaseType := 20;
vDevolucionE.Lines.BaseEntry := 9;
vDevolucionE.Lines.BaseLine := 0;
vDevolucionE.Lines.Add;
vDevolucionE.Lines.WarehouseCode := '020';
vDevolucionE.Lines.ItemCode := '10000151';
vDevolucionE.Lines.Quantity := 4;
vDevolucionE.Lines.PriceAfterVAT := 1.16;
vDevolucionE.Lines.BaseType := 20;
vDevolucionE.Lines.BaseEntry := 9;
vDevolucionE.Lines.BaseLine := 1;
RetVal := vDevolucionE.Add;
De antemano gracias
Hola, te cuento que por funcionalidad, una vez que se ha cerrado la orden de compra pues le diste entrada a las 10 piezas, NO es posible volver a abrirla.
Esto ocurrio de manera automatica
El proceso correcto seria, hacer en base a la entrada por OP, una devolucion de esos 5 que necesitas y despues volver a hacer la OC de esos 5 articulos para inciar el proceso de nuevo.
Saludos
Hola Mauricio gracias por contestar.
Estoy de acuerdo contigo en que por funcionalidad no es posible abrir la OC cuando se cerro de forma automatica, pero esto sucedida en las versiones anteriores a 8.81.
Apartir de la versión 8.81 ya existe una funcionalidad en parametrizacion de documentos, en la cual le puedes indicar a SBO que se abra la OC cuando se realize una devolucion.
Es por eso que te comentaba si sabes de algun objeto en esta nueva version con el cual se pueda realizar ese movimiento.
O cuando comentas que por funcionalidad no se puede, te refieres a la funcionalidad del SDK.
De antemano gracias por el apoyo.
Saludos cordiales...
User | Count |
---|---|
102 | |
12 | |
11 | |
6 | |
5 | |
4 | |
4 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.