2026-10-16 00:22:11 -05:00
using Net.Business.Entities.WMS.Transferencia ;
using Sap.Data.Hana ;
2026-10-05 17:53:41 -05:00
using System ;
2026-10-16 00:22:11 -05:00
using System.Collections.Generic ;
2026-10-05 17:53:41 -05:00
using System.Data ;
namespace Net.Data.HelperData.Invoices
{
public class HelperInvoice
{
public static int Get ( string DocNum )
{
DataTable dt = new DataTable ();
int DocEntry = 0 ;
using ( HanaConnection con = new HanaConnection ( LocalData . ConnectionString ))
{
con . Open ();
HanaCommand cmd = new HanaCommand ( $"CALL\" { LocalData . Schema } \ ".\"ITCA_WMS_SAP_GetEntradaPorImportacion\"(?)" , con );
cmd . Parameters . Add ( "DocNum" , HanaDbType . VarChar ). Value = DocNum ?? "" ;
HanaDataAdapter da = new HanaDataAdapter ( cmd );
if ( da != null )
{
da . Fill ( dt );
}
con . Close ();
}
for ( int x = 0 ; x < dt . Rows . Count ; x ++)
{
DocEntry = ( dt . Rows [ x ][ "DocEntry" ] != DBNull . Value ) ? Convert . ToInt32 ( dt . Rows [ x ][ "DocEntry" ]) : 0 ;
}
return DocEntry ;
}
2026-10-16 00:22:11 -05:00
// Lineas de todas las Entradas de Mercaderia (no anuladas) enlazadas (BaseType 18) a la Factura de Reserva
// de proveedores con ese DocNum (isIns = 'Y'). Si una linea ya tiene transferencia de stock (TargetType 67)
// y esa transferencia no esta anulada, TransferenciaDocEntry trae su DocEntry; si no, 0.
public static List < BE_EntradaImportacionLinea > GetEntradasPorFactura ( string DocNum )
{
var lista = new List < BE_EntradaImportacionLinea >();
DataTable dt = new DataTable ();
string esquema = LocalData . Schema ;
using ( HanaConnection con = new HanaConnection ( LocalData . ConnectionString ))
{
con . Open ();
HanaCommand cmd = new HanaCommand (
$"SELECT E.\" DocEntry \ ", E.\"DocNum\", L.\"LineNum\", L.\"ItemCode\", L.\"Quantity\", " +
$"CASE WHEN L.\" TargetType \ " = 67 AND W.\"DocEntry\" IS NOT NULL AND W.\"CANCELED\" = 'N' THEN W.\"DocEntry\" ELSE 0 END AS \"TransferenciaDocEntry\" " +
$"FROM \" { esquema } \ ".\"OPCH\" F " +
$"INNER JOIN \" { esquema } \ ".\"PDN1\" L ON L.\"BaseType\" = 18 AND L.\"BaseEntry\" = F.\"DocEntry\" " +
$"INNER JOIN \" { esquema } \ ".\"OPDN\" E ON E.\"DocEntry\" = L.\"DocEntry\" " +
$"LEFT JOIN \" { esquema } \ ".\"OWTR\" W ON L.\"TargetType\" = 67 AND W.\"DocEntry\" = L.\"TrgetEntry\" " +
$"WHERE F.\" DocNum \ " = ? AND F.\"isIns\" = 'Y' AND E.\"CANCELED\" = 'N' " +
$"ORDER BY E.\" DocEntry \ ", L.\"LineNum\"" , con );
cmd . Parameters . Add ( "DocNum" , HanaDbType . VarChar ). Value = DocNum ?? "" ;
HanaDataAdapter da = new HanaDataAdapter ( cmd );
da . Fill ( dt );
con . Close ();
}
for ( int x = 0 ; x < dt . Rows . Count ; x ++)
{
lista . Add ( new BE_EntradaImportacionLinea ()
{
DocEntry = Convert . ToInt32 ( dt . Rows [ x ][ "DocEntry" ]),
DocNum = Convert . ToInt32 ( dt . Rows [ x ][ "DocNum" ]),
LineNum = Convert . ToInt32 ( dt . Rows [ x ][ "LineNum" ]),
ItemCode = Convert . ToString ( dt . Rows [ x ][ "ItemCode" ]),
Quantity = Convert . ToDecimal ( dt . Rows [ x ][ "Quantity" ]),
TransferenciaDocEntry = Convert . ToInt32 ( dt . Rows [ x ][ "TransferenciaDocEntry" ]),
});
}
return lista ;
}
2026-10-05 17:53:41 -05:00
}
}