Etiquetado: AL, changecompany, Consolidar empresas, report
- Este debate tiene 4 respuestas, 3 mensajes y ha sido actualizado por última vez el hace 8 meses por
juanjo.mauriz.
Crear un Report que pase por la misma tabla de todas las empresas.
-
juanjo.maurizParticipantejuanjo.maurizBuenas tardes.
Ahora viene la pregunta “tonta” de la semana.
Necesito crear un report de “Mov.Productos” en el cual pase por toda la tabla de la primera empresa, luego de la segunda empresa, luego de la tercera y así sucesivamente.
Se como se debería hacer y es llamando a ChangeCompany y se va poniendo cada una con un repeat, pero el problema es que no se donde ponerlo, ya que si lo pongo en el trigger de onPreDataItem() no debería servir, ya que se quedará con los datos de la última empresa, ya que todavía no los ha recibido.
Por otro lado los he puesto en onAfterGetRecord() y pasa lo mismo, coge solo los de la útima empresa, ademas que no tiene sentido porque si pasa por un dato y en la segunda empresa no está, tampoco lo haría bien.
Yo se hacerlo mediante una tabla temporal, pero no es lo que quiero, ya que mi intención es hacer una pasada en la base de datos de los movimientos de productos y no hacer una lectura de los “items” e ir viendo si tiene movimientos de productos e ir insertando datos, aunque la finalidad sea la misma, ya que se puede demorar muchisimo al buscar gran cantidad de datos en cada item leído.
Estoy en blanco, ya que imagino que será algo que vea que la tabla se ha leido completa con los filtros que tenga, algo como…
var (global)
Contador: Integer;
//–//
trigger onAfterGetRecord()
begin
Contador += 1;
if (ItemLedgerEntry.count() = Contador) then begin
ItemLedgerEntry.ChangeCompany(Empresa2); <- Cambiar de empresa
**** aqui el código para reinicie la tabla y lea de nuevo la de la otra empresa o algo así **** ;
Clear(Contador); <- Reiniciar el Contador;
end;end;
…y entonces hacer algo de currReport.Update() para que se inicialice o algo parecido, pero no se como poner el código para que funcione… ademas que no se si funcionará el disparate que haya podido decir con el currReport.
Si tenéis algo de idea de como se podría hacer directamente en la tabla original y no con temporales os lo agradecería.
Saludos y gracias!!!
7 octubre 2022 a las 19:48 #1024572
oscarmingteParticipanteoscarmingteHola ,
Cuando crear el report tienes que definir 2 data item el primero es el de la tabla company que vas recorriendo y el segundo es la tabla item los indentas de tal manera que por cada registro de company pasa por el de item , y en el on pre del data item de item haces el change company de item.
He leído que quieres insertar movimientos de producto mucho cuidado con eso ya que si creas un movimiento de producto( no te lo recomiendo) deerias crear movimiento de valor movimiento de almacén etc, las tablas van relacionadas y si sacas algún informe el dia de mañana puede que no te cuadre por que te faltan movimientos asi como para liquidar.
Quizás es mejor que expongas el problema a lo mejor existe una mejor solución a crear movimientos de producto a traves de un report.
Espero que te sirvan las explicaciones si no te lo paso hecho.
Un saludo Óscar.
8 octubre 2022 a las 18:50 #1024574
juanjo.maurizParticipantejuanjo.maurizHola oscarmingte.
Cuando crear el report tienes que definir 2 data item el primero es el de la tabla company que vas recorriendo y el segundo es la tabla item los indentas de tal manera que por cada registro de company pasa por el de item , y en el on pre del data item de item haces el change company de item.
Ya tenía hecho eso que me comentas, pero algo pasa por que si pasa por las empresas, pero saca una cantidad de datos que no tiene lógica y encima no pone nada en el report.
No entiendo eso del pre del data imten, ya que eso pasa una vez sola por el, ¿no?, entonces ¿las demas empresas, como va a hacer el cambio correspondiente?
He leído que quieres insertar movimientos de producto mucho cuidado con eso ya que si creas un movimiento de producto( no te lo recomiendo) deerias crear movimiento de valor movimiento de almacén etc, las tablas van relacionadas y si sacas algún informe el dia de mañana puede que no te cuadre por que te faltan movimientos asi como para liquidar.
No, no quiero insertar movimientos, solo quiero correr por los movimientos y los que correspondan a “venta” de unas fechas que me las imprima en una suma total, solo eso.
Espero que te sirvan las explicaciones si no te lo paso hecho.
Hombre, si me pasas un ejemplo para poder compararlo con el mio, no sabes el favor que me haces, pero yo te paso un pequeño ejemplo de lo que tengo para que veas donde puede que me esté equivocando…
dataitem(Compañia; Company)
{
DataItemTableView = SORTING(Name) ORDER(ascending);
column(Nombre; Name)
{
}dataitem(ItemLedgerEntry; “Item Ledger Entry”)
{
DataItemTableView = SORTING(“Item No.”, “Posting Date”) ORDER(ascending);
column(PostingDate; “Posting Date”)
{
}
column(EntryType; “Entry Type”)
{
}
column(DocumentType; “Document Type”)
{
}
column(ItemNo; “Item No.”)
{
}
column(InvoicedQuantity; “Invoiced Quantity”)
{
}
column(Description; Description)
{
}
column(ItemCategoryCode; “Item Category Code”)
{
}trigger OnPreDataItem()
begin
ItemLedgerEntry.SetFilter(“Entry Type”, format(ItemLedgerEntry.”Entry Type”::Sale));
ItemLedgerEntry.SetFilter(“Posting Date”, ‘%1..%2’, StartDate1, EndDate);
Itemledgerentry.setfilter(“Item Category Code”, xFamilia);end;
trigger OnAfterGetRecord()
var
Item: Record “Item Category”;
begin// aquí está el código para la suma de datos, pero no es necesario ponerlo, porque la idea creo que ya está
end;
Muchas gracias por la colaboración y tu tiempo…
Saludos!!!
9 octubre 2022 a las 22:48 #1024575
juanjo.maurizParticipantejuanjo.maurizHola agr@versades.com
Dame un ejemplo del Query, ya que soy un poco nuevo en AL, ya que vengo de C++ y no se como funcionan la SQL aquí, en AL
Gracias y saludos!!!9 octubre 2022 a las 22:51 #1024576
Debe iniciar sesión para responder a este tema.