Commit inicial: ITCA_API_SAP_WMS (.NET Core 3.1)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
commit
2b82744eb8
168 files changed
+11066
No files matched your search
+22
@@ -0,0 +1,22 @@
|
||||
# Build
|
||||
bin/
|
||||
obj/
|
||||
publish/
|
||||
*.user
|
||||
*.suo
|
||||
|
||||
# IDE
|
||||
.vs/
|
||||
.vscode/
|
||||
.idea/
|
||||
|
||||
# OS
|
||||
.DS_Store
|
||||
|
||||
# Logs
|
||||
*.log
|
||||
|
||||
# Configuración con credenciales (usar appsettings.example.json como plantilla)
|
||||
appsettings.json
|
||||
appsettings.*.json
|
||||
!appsettings.example.json
|
||||
@@ -0,0 +1,100 @@
|
||||
# ITCA_API_SAP_WMS (.NET) — proyecto principal
|
||||
|
||||
API de integración WMS ↔ SAP Business One, **ASP.NET Core 3.1**. Para
|
||||
build/publish/despliegue en IIS ver [`README.md`](./README.md).
|
||||
|
||||
Esta carpeta (`backend_octubre`) es **el proyecto vigente**. Antes existía
|
||||
una copia paralela, `ITCA_API_SAP_WMS`, con la funcionalidad nueva portada
|
||||
desde la reescritura Python; se portó aquí y esa copia quedó **archivada en un
|
||||
comprimido (versión antigua)**. No hay `git` en esta carpeta.
|
||||
|
||||
## Qué se portó desde `ITCA_API_SAP_WMS` (2026-10-05)
|
||||
|
||||
Detalle técnico en `docs/PORTE_FUNCIONALIDAD_NUEVA.md`,
|
||||
`docs/SOLICITUD_TRANSFERENCIA.md` y `docs/PICKING.md`.
|
||||
|
||||
1. **SolicitudTransferencia**: `PATCH /api/SolicitudTransferencia/{docEntry}` y
|
||||
`POST /api/SolicitudTransferencia/{docEntry}/cerrar`.
|
||||
2. **Picking diurno/nocturno**: campo `Notificacion` (early-return en
|
||||
`PickingRepository.Create` tras `HelperProcesoPiciking.Set`) y
|
||||
`POST /api/Picking/HojaRuta/{docEntry}/Cerrar`.
|
||||
3. **`ConnectionServiceLayer`**: `PatchNoContentAsync` y `PostActionAsync`
|
||||
(métodos nuevos; los existentes no se tocaron).
|
||||
|
||||
## Cambios de configuración y correcciones hechas en esta carpeta
|
||||
|
||||
- **Credenciales y esquema HANA en `appsettings.json`**, sección `Hana`
|
||||
(`server`, `user`, `password`, `schema` opcional), leída por
|
||||
`LocalData.Configure` desde `Startup`. Antes estaban fijas en el código
|
||||
(`LocalData.cs`, `Log/B_Log.cs`). El esquema sale de `Hana:schema` o, si no
|
||||
está, de `SapServiceLayer:company`; **si falta la sección `Hana` o el
|
||||
esquema, la app no arranca** (error claro). Ya no hay `DB_NAME` fijo.
|
||||
- **Precio promedio solo en entradas** (`TipoMovimiento "01"`) en
|
||||
`InventarioRepository.Create` (los dos chequeos: `SubAlmacen` y `Almacen`).
|
||||
Si el artículo no tiene stock, se conserva el `PrecioPromedio` del request en
|
||||
vez de abortar con *"No existe stock disponible para el articulo X"* (ese
|
||||
error bloqueaba ingresos de artículos sin stock previo). En salidas ya no se
|
||||
busca el promedio: `PriceAfterVAT` lleva el precio del request. El chequeo de
|
||||
stock de la rama de **salida** de `PickingRepository` (~línea 363) no se tocó.
|
||||
- **Lote de 100 líneas** (`InventarioRepository.Create`): `var Inventario =
|
||||
entidad` reutilizaba el mismo objeto, y con más de 100 líneas se generaban N
|
||||
documentos iguales con el último bloque. Ahora se crea una copia por bloque y
|
||||
la rama de salida lee `entidad_inventario.Detalle`.
|
||||
- **SQL injection**: parametrizadas las consultas de `HelperProcesoPiciking`,
|
||||
`HelperStock`, `HelperInventario`, `HelperInvoice`, `HelperCorrelativo`,
|
||||
`HelperHojaRuta` y `HelperProcesoPermitido` (`?` + `HanaParameter`).
|
||||
El esquema sigue interpolado (viene de configuración, no del request).
|
||||
- `ITCA_API_SAP_WMS.xml` ahora se genera también en Release (sin eso Swagger
|
||||
revienta con `FileNotFoundException` en un `publish -c Release`).
|
||||
|
||||
## Funcionalidad propia de esta carpeta (no existe en la copia antigua)
|
||||
|
||||
Hoja de Ruta (`HojaRutaController`, `HRRepository`, `GlobalDataRepository`),
|
||||
reapertura de facturas (`InvoiceRepository.ReOpen`, `PostReOpen`), notas de
|
||||
crédito con documentos de referencia, cierre automático de la solicitud de
|
||||
traslado en `Transferencia` (`PostClose`), `Latitud`/`Longitud` y reproceso en
|
||||
Picking, columna `HORA` en `B_Log`. Lo que **no** se trajo: `Chatbots` y
|
||||
`MessageController` (solo existen en la copia archivada).
|
||||
|
||||
## Sin verificar
|
||||
|
||||
- **Nada se probó contra SAP/HANA reales.** Solo se verificó que compila
|
||||
(0 errores) y que el publish se genera.
|
||||
- La sintaxis `CALL "esquema"."proc"(?, ?)` con parámetros no está probada con
|
||||
el driver HANA 2.1; si falla con un error de parámetro, mirar primero ahí.
|
||||
- Para probar el lote de 100: un inventario de >100 líneas (p. ej. 250) debe
|
||||
generar 3 documentos (100/100/50) sin repetir ni perder líneas, tanto en
|
||||
entradas como en salidas.
|
||||
|
||||
## Bugs conocidos, sin corregir
|
||||
|
||||
- `BE_ResultadoTransaccion<T>.NombreEstacion`: setter con recursión infinita
|
||||
(bomba de tiempo; hoy nada lo asigna).
|
||||
- `ConnectionServiceLayer.PatchAsyncSBA<T>`: con un `204` real devuelve `null`
|
||||
sin marcar éxito. `Login()`/`LoginPost()` duplicados; `throw` inalcanzable
|
||||
tras `return` en varios `catch`.
|
||||
- `ValidarCertificado` acepta cualquier certificado TLS (siempre `true`).
|
||||
- `HelperDB.SET(string query)` ejecuta SQL arbitrario; hoy sin llamadores
|
||||
(candidato a borrar).
|
||||
- `appsettings.json` versionado en texto plano con credenciales reales
|
||||
(SAP Service Layer, **HANA `B1ADMIN`**, semilla JWT). Rotar la contraseña de
|
||||
`B1ADMIN` (estuvo en el código fuente) y evaluar un usuario HANA de mínimos
|
||||
permisos.
|
||||
|
||||
## Despliegue
|
||||
|
||||
Sitio IIS previsto: **`/integracion`** (antes `/integracion_wms`). Publicar con
|
||||
el comando del README **sin pisar** el `appsettings.json` del servidor; agregar
|
||||
a ese archivo la sección `Hana` y revisar `SapServiceLayer:company` (determina
|
||||
contra qué base lee y escribe). El `web.config` generado por `dotnet publish`
|
||||
usa `processPath=".\ITCA_API_SAP_WMS.exe"`; el del código fuente apunta a
|
||||
`bin\Debug\...` (solo para sitios que corren desde el código compilado).
|
||||
|
||||
## Pendiente
|
||||
|
||||
- Probar en QA: endpoints nuevos (SolicitudTransferencia, `Notificacion`,
|
||||
`HojaRuta/Cerrar`), un ingreso sin stock previo, el lote de 100 y las
|
||||
consultas parametrizadas.
|
||||
- Verificar que existan en el esquema del sitio los procedimientos `ITCA_*`
|
||||
y las tablas `@ITCA_PROWMS`, `@SYP_MOTIVOS`, `@SYP_NUMDOC`.
|
||||
- Decidir si se corrigen los bugs de la lista de arriba.
|
||||
@@ -0,0 +1,73 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.6.33829.357
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Net.Business.DTO", "Net.Business.DTO\Net.Business.DTO.csproj", "{22BCC127-93B5-40DE-9678-A172AA8F542C}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Net.Business.Entities", "Net.Business.Entities\Net.Business.Entities.csproj", "{5B11F494-0091-4A4C-930A-90012AD4F695}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Net.Connection", "Net.Connection\Net.Connection.csproj", "{F63F6FF0-BD00-4A28-84E7-ACA7CA40AC10}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Net.Connection.Attributes", "Net.Connection.Attributes\Net.Connection.Attributes.csproj", "{540EEA77-9B44-4796-89EF-0ADDE3EE3825}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Net.CrossCotting", "Net.CrossCotting\Net.CrossCotting.csproj", "{CACDBD23-52C9-4533-B231-A7A59D0EDAF8}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Net.Data", "Net.Data\Net.Data.csproj", "{DC9B3CEE-7AF1-4421-8058-4D0244DD1CF5}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Net.Business.Services", "Net.Business.Services\Net.Business.Services.csproj", "{B4BE6148-6E1F-4BB9-B399-424C4E6BF4C0}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Net.Constantes", "Net.Constantes\Net.Constantes.csproj", "{05A306D4-ADBB-4205-A589-D692D1ACB954}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Net.Connection.ServiceLayer", "Net.Connection.ServiceLayer\Net.Connection.ServiceLayer.csproj", "{21B28EDA-ED40-4886-B11F-37C5794A6E33}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{22BCC127-93B5-40DE-9678-A172AA8F542C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{22BCC127-93B5-40DE-9678-A172AA8F542C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{22BCC127-93B5-40DE-9678-A172AA8F542C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{22BCC127-93B5-40DE-9678-A172AA8F542C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{5B11F494-0091-4A4C-930A-90012AD4F695}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{5B11F494-0091-4A4C-930A-90012AD4F695}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{5B11F494-0091-4A4C-930A-90012AD4F695}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{5B11F494-0091-4A4C-930A-90012AD4F695}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F63F6FF0-BD00-4A28-84E7-ACA7CA40AC10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F63F6FF0-BD00-4A28-84E7-ACA7CA40AC10}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F63F6FF0-BD00-4A28-84E7-ACA7CA40AC10}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F63F6FF0-BD00-4A28-84E7-ACA7CA40AC10}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{540EEA77-9B44-4796-89EF-0ADDE3EE3825}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{540EEA77-9B44-4796-89EF-0ADDE3EE3825}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{540EEA77-9B44-4796-89EF-0ADDE3EE3825}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{540EEA77-9B44-4796-89EF-0ADDE3EE3825}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{CACDBD23-52C9-4533-B231-A7A59D0EDAF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{CACDBD23-52C9-4533-B231-A7A59D0EDAF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CACDBD23-52C9-4533-B231-A7A59D0EDAF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CACDBD23-52C9-4533-B231-A7A59D0EDAF8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{DC9B3CEE-7AF1-4421-8058-4D0244DD1CF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{DC9B3CEE-7AF1-4421-8058-4D0244DD1CF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DC9B3CEE-7AF1-4421-8058-4D0244DD1CF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DC9B3CEE-7AF1-4421-8058-4D0244DD1CF5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B4BE6148-6E1F-4BB9-B399-424C4E6BF4C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B4BE6148-6E1F-4BB9-B399-424C4E6BF4C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B4BE6148-6E1F-4BB9-B399-424C4E6BF4C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B4BE6148-6E1F-4BB9-B399-424C4E6BF4C0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{05A306D4-ADBB-4205-A589-D692D1ACB954}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{05A306D4-ADBB-4205-A589-D692D1ACB954}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{05A306D4-ADBB-4205-A589-D692D1ACB954}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{05A306D4-ADBB-4205-A589-D692D1ACB954}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{21B28EDA-ED40-4886-B11F-37C5794A6E33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{21B28EDA-ED40-4886-B11F-37C5794A6E33}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{21B28EDA-ED40-4886-B11F-37C5794A6E33}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{21B28EDA-ED40-4886-B11F-37C5794A6E33}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {139784B0-0533-40EC-8A32-A4E3E7CA0A89}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -0,0 +1,22 @@
|
||||
using Net.Business.Entities.Authenticate;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.DTO.Authenticate
|
||||
{
|
||||
public class Dto_AuthenticateRequest
|
||||
{
|
||||
public string client_id { get; set; }
|
||||
public string client_secret { get; set; }
|
||||
|
||||
public BE_AuthenticateRequest RetornaModelo()
|
||||
{
|
||||
return new BE_AuthenticateRequest()
|
||||
{
|
||||
client_id = client_id,
|
||||
client_secret = client_secret,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Net.Business.Entities\Net.Business.Entities.csproj" />
|
||||
<ProjectReference Include="..\Net.CrossCotting\Net.CrossCotting.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,29 @@
|
||||
using Net.Business.Entities.WMS.HojaRuta;
|
||||
|
||||
namespace Net.Business.DTO.WMS.HojaRuta
|
||||
{
|
||||
public class Dto_HojaRuta
|
||||
{
|
||||
public int DocEntry { get; set; }
|
||||
public string CodEstado { get; set; }
|
||||
public string Estado { get; set; }
|
||||
public string Proceso { get; set; }
|
||||
public int IdEstadoCubico { get; set; }
|
||||
public string HoraInicio { get; set; }
|
||||
public string FinRuta { get; set; }
|
||||
public string CodMotivo { get; set; }
|
||||
public BE_HojaRutaEntities RetornaModelo()
|
||||
{
|
||||
return new BE_HojaRutaEntities()
|
||||
{
|
||||
DocEntry = DocEntry,
|
||||
IdEstadoCubico = IdEstadoCubico,
|
||||
Estado = Estado,
|
||||
Proceso = Proceso,
|
||||
CodMotivo = CodMotivo,
|
||||
FinRuta = FinRuta,
|
||||
HoraInicio = HoraInicio
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
using iTextSharp.text;
|
||||
using Net.Business.Entities.ServicesLayer.HR;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Net.Business.DTO.WMS.HojaRuta
|
||||
{
|
||||
public class Dto_HojaRutaCreate
|
||||
{
|
||||
public string ModalidadTransporte { get; set; }
|
||||
public string Zona { get; set; }
|
||||
public string Territorio { get; set; }
|
||||
public string Despachador { get; set; }
|
||||
public DateTime FechaDespacho { get; set; }
|
||||
public string AgenciaTransporte { get; set; }
|
||||
public string NombreConductor { get; set; }
|
||||
public string LicenciaConductor { get; set; }
|
||||
public string PlacaVehiculo { get; set; }
|
||||
public string Estado { get; set; }
|
||||
public List<BE_HojaRutaCreateDetalle> Detalle { get; set; }
|
||||
|
||||
public BE_HojaRutaCreate RetornaModelo()
|
||||
{
|
||||
return new BE_HojaRutaCreate()
|
||||
{
|
||||
AgenciaTransporte = AgenciaTransporte,
|
||||
Despachador = Despachador,
|
||||
Detalle = Detalle,
|
||||
Estado = Estado,
|
||||
FechaDespacho = FechaDespacho,
|
||||
LicenciaConductor = LicenciaConductor,
|
||||
ModalidadTransporte = ModalidadTransporte,
|
||||
NombreConductor = NombreConductor,
|
||||
PlacaVehiculo = PlacaVehiculo,
|
||||
Territorio = Territorio,
|
||||
Zona = Zona
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
using Net.Business.Entities.WMS.Inventario;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Net.Business.DTO.WMS.Inventario
|
||||
{
|
||||
public class Dto_Inventario
|
||||
{
|
||||
public DateTime Fecha { get; set; }
|
||||
public DateTime FechaVencimiento { get; set; }
|
||||
public string TipoMovimientoSAP { get; set; }
|
||||
public string TipoMovimiento { get; set; }
|
||||
public string TipoInventario { get; set; }
|
||||
public string Almacen { get; set; }
|
||||
public string SubAlmacen { get; set; }
|
||||
public List<BE_InventarioItems> Detalle { get; set; }
|
||||
public string NroInventario { get; set; }
|
||||
public BE_Inventario RetornaModelo()
|
||||
{
|
||||
return new BE_Inventario()
|
||||
{
|
||||
Almacen = Almacen,
|
||||
Detalle = Detalle,
|
||||
Fecha = Fecha,
|
||||
FechaVencimiento = FechaVencimiento,
|
||||
SubAlmacen = SubAlmacen,
|
||||
TipoMovimiento = TipoMovimiento,
|
||||
NroInventario = NroInventario,
|
||||
TipoInventario = TipoInventario,
|
||||
TipoMovimientoSAP = TipoMovimientoSAP,
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
using Net.Business.Entities.WMS.Picking;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.DTO.WMS.Picking
|
||||
{
|
||||
public class Dto_PickingRequest
|
||||
{
|
||||
public string NumOrden { get; set; }
|
||||
public DateTime FechaOrden { get; set; }
|
||||
public string FechaEntrega { get; set; }
|
||||
public string CodigoAlmacen { get; set; }
|
||||
public DateTime FechaLlegada { get; set; }
|
||||
public string CodigoERPCliente { get; set; }
|
||||
public string CodigoERPDireccion { get; set; }
|
||||
public int IdTipo { get; set; }
|
||||
public int IdTipoDoc { get; set; }
|
||||
public string Observacion { get; set; }
|
||||
public int IdCondicion { get; set; }
|
||||
public int Accion { get; set; }
|
||||
public int IdEstadoCubico { get; set; }
|
||||
public int DocEntry { get; set; }
|
||||
public string Proceso { get; set; }
|
||||
public string CodMotivo { get; set; }
|
||||
// "preliminar" | "cierre" - cualquier otro valor o ausente se trata como
|
||||
// "preliminar" (default seguro, nunca crea documentos en SAP por accidente).
|
||||
public string Notificacion { get; set; }
|
||||
public List<BE_PickingDetalle> Detalle { get; set; }
|
||||
|
||||
public decimal Longitud { get; set; }
|
||||
public decimal Latitud { get; set; }
|
||||
public BE_PickingRequest RetornaModelo()
|
||||
{
|
||||
return new BE_PickingRequest()
|
||||
{
|
||||
Accion = Accion,
|
||||
CodigoAlmacen = CodigoAlmacen,
|
||||
CodigoERPCliente = CodigoERPCliente,
|
||||
IdEstadoCubico = IdEstadoCubico,
|
||||
CodigoERPDireccion = CodigoERPDireccion,
|
||||
Detalle = Detalle,
|
||||
FechaEntrega = FechaEntrega,
|
||||
FechaLlegada = FechaLlegada,
|
||||
FechaOrden = FechaOrden,
|
||||
IdCondicion = IdCondicion,
|
||||
IdTipo = IdTipo,
|
||||
IdTipoDoc = IdTipoDoc,
|
||||
NumOrden = NumOrden,
|
||||
Observacion = Observacion,
|
||||
DocEntry = DocEntry,
|
||||
Proceso = Proceso,
|
||||
CodMotivo = CodMotivo,
|
||||
Notificacion = Notificacion,
|
||||
Latitud = Latitud,
|
||||
Longitud = Longitud,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
using Net.Business.Entities.WMS.Recibo;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Net.Business.DTO.WMS.Recibo
|
||||
{
|
||||
public class Dto_ReciboRequest
|
||||
{
|
||||
public string NumOrden { get; set; }
|
||||
public DateTime FechaOrden { get; set; }
|
||||
public string CodigoAlmacen { get; set; }
|
||||
public DateTime FechaLlegada { get; set; }
|
||||
public string CodigoERPProveedor { get; set; }
|
||||
public int IdTipo { get; set; }
|
||||
public int IdTipoDoc { get; set; }
|
||||
public string Observacion { get; set; }
|
||||
public int IdCuenta { get; set; }
|
||||
public int Accion { get; set; }
|
||||
public int DocEntry { get; set; }
|
||||
public string DocImportacion { get; set; }
|
||||
public string U_SYP_MDTD { get; set; }
|
||||
public string U_SYP_MDSD { get; set; }
|
||||
public string U_SYP_MDCD { get; set; }
|
||||
public string Comentario { get; set; }
|
||||
public List<BE_ReciboDetalle> Detalle { get; set; }
|
||||
|
||||
public BE_ReciboRequest RetornaModelo()
|
||||
{
|
||||
return new BE_ReciboRequest()
|
||||
{
|
||||
Accion = Accion,
|
||||
CodigoAlmacen = CodigoAlmacen,
|
||||
CodigoERPProveedor = CodigoERPProveedor,
|
||||
Detalle = Detalle,
|
||||
FechaLlegada = FechaLlegada,
|
||||
FechaOrden = FechaOrden,
|
||||
IdTipo = IdTipo,
|
||||
IdTipoDoc = IdTipoDoc,
|
||||
Observacion = Observacion,
|
||||
IdCuenta = IdCuenta,
|
||||
NumOrden = NumOrden,
|
||||
DocEntry = DocEntry,
|
||||
DocImportacion = DocImportacion,
|
||||
Comentario = Comentario,
|
||||
U_SYP_MDSD = U_SYP_MDSD,
|
||||
U_SYP_MDCD = U_SYP_MDCD,
|
||||
U_SYP_MDTD = U_SYP_MDTD
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
using Net.Business.Entities.WMS.SolicitudTransferencia;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Net.Business.DTO.WMS.SolicitudTransferencia
|
||||
{
|
||||
public class Dto_SolicitudTransferenciaPatchDetalle
|
||||
{
|
||||
public int Linea { get; set; }
|
||||
public double Cantidad { get; set; }
|
||||
}
|
||||
|
||||
public class Dto_SolicitudTransferenciaPatchRequest
|
||||
{
|
||||
public string NumOrden { get; set; }
|
||||
public List<Dto_SolicitudTransferenciaPatchDetalle> Detalle { get; set; }
|
||||
|
||||
public BE_SolicitudTransferenciaPatchRequest RetornaModelo()
|
||||
{
|
||||
return new BE_SolicitudTransferenciaPatchRequest()
|
||||
{
|
||||
NumOrden = NumOrden,
|
||||
Detalle = Detalle?.Select(d => new BE_SolicitudTransferenciaPatchDetalle
|
||||
{
|
||||
Linea = d.Linea,
|
||||
Cantidad = d.Cantidad,
|
||||
}).ToList(),
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
using Net.Business.Entities.WMS.Transferencia;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.DTO.WMS.Transferencia
|
||||
{
|
||||
public class Dto_TransferenciaRequest
|
||||
{
|
||||
public string NumOrden { get; set; }
|
||||
public DateTime FechaOrden { get; set; }
|
||||
public int IdTipo { get; set; }
|
||||
public string CodigoAlmacenOrigen { get; set; }
|
||||
public string CodigoSubAlmacenOrigen { get; set; }
|
||||
public int IdCondicionOrigen { get; set; }
|
||||
public string CodigoAlmacenDestino { get; set; }
|
||||
public string CodigoSubAlmacenDestino { get; set; }
|
||||
public int IdCondicionDestino { get; set; }
|
||||
public string Observacion { get; set; }
|
||||
public int IdCuenta { get; set; }
|
||||
public int Accion { get; set; }
|
||||
public int DocEntry { get; set; }
|
||||
public int DocEntryEM { get; set; }
|
||||
public List<BE_TransferenciaDetalle> Detalle { get; set; }
|
||||
|
||||
public BE_TransferenciaRequest RetornaModelo()
|
||||
{
|
||||
return new BE_TransferenciaRequest()
|
||||
{
|
||||
Accion = Accion,
|
||||
TransferenciaDetalles = Detalle,
|
||||
CodigoAlmacenDestino = CodigoAlmacenDestino,
|
||||
CodigoAlmacenOrigen = CodigoAlmacenOrigen,
|
||||
CodigoSubAlmacenDestino = CodigoSubAlmacenDestino,
|
||||
CodigoSubAlmacenOrigen = CodigoSubAlmacenOrigen,
|
||||
FechaOrden = FechaOrden,
|
||||
IdCondicionDestino = IdCondicionDestino,
|
||||
IdCondicionOrigen = IdCondicionOrigen,
|
||||
IdCuenta = IdCuenta,
|
||||
IdTipo = IdTipo,
|
||||
NumOrden = NumOrden,
|
||||
Observacion = Observacion,
|
||||
DocEntry = DocEntry,
|
||||
DocEntryEM = DocEntryEM
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.Authenticate
|
||||
{
|
||||
public class BE_AuthenticateRequest
|
||||
{
|
||||
public string client_id { get; set; }
|
||||
public string client_secret { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.Authenticate
|
||||
{
|
||||
public class BE_AuthenticateResponse
|
||||
{
|
||||
public string Token { get; set; }
|
||||
public string Type { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.Authenticate
|
||||
{
|
||||
public class ModelCredential
|
||||
{
|
||||
public string client_id { get; set; }
|
||||
public string client_secret { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
namespace Net.Business.Entities
|
||||
{
|
||||
public class BE_EmailSenderOptions
|
||||
{
|
||||
public int Port { get; set; }
|
||||
public string Email { get; set; }
|
||||
public string Password { get; set; }
|
||||
public bool EnableSsl { get; set; }
|
||||
public string Host { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Net.Connection.Attributes\Net.Connection.Attributes.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Email\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,45 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Net.Business.Entities
|
||||
{
|
||||
public class BE_ResultadoTransaccion<T>
|
||||
{
|
||||
/// <summary>
|
||||
/// ID de un nuevo registro o Id de registro actualizar
|
||||
/// </summary>
|
||||
public int? DocEntry { get; set; }
|
||||
|
||||
public string DocNum { get; set; }
|
||||
/// <summary>
|
||||
/// Resultado de Codigo, Obtenido de la Base de Datos
|
||||
/// 0 => Correcto
|
||||
/// -1 => Error
|
||||
/// </summary>
|
||||
public int StatusCode { get; set; }
|
||||
/// <summary>
|
||||
/// Descripcion de la acción al finalizar el metodo invocado
|
||||
/// </summary>
|
||||
public string Message { get; set; }
|
||||
public string Error { get; set; }
|
||||
/// <summary>
|
||||
/// Nombre de la Aplicación
|
||||
/// </summary>
|
||||
public string AppName { get; set; }
|
||||
/// <summary>
|
||||
/// Nombre del Método
|
||||
/// </summary>
|
||||
public string MethodName { get; set; }
|
||||
/// <summary>
|
||||
/// Lista del Resultado al finalizar el método invocado
|
||||
/// </summary>
|
||||
public IEnumerable<T> ListData { get; set; }
|
||||
/// <summary>
|
||||
/// Data Resultado al finalizar el método invocado
|
||||
/// </summary>
|
||||
public T Data { get; set; }
|
||||
/// <summary>
|
||||
/// Nombre de la estación de trabajo
|
||||
/// </summary>
|
||||
public string NombreEstacion { get => System.Environment.MachineName; set => NombreEstacion = System.Environment.MachineName; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer
|
||||
{
|
||||
public class BE_BaseResponseSap
|
||||
{
|
||||
public decimal DocTotal { get; set; }
|
||||
public decimal DocTotalSys { get; set; }
|
||||
public long? TransNum { get; set; }
|
||||
public long? DocEntry { get; set; }
|
||||
public long? AbsoluteEntry { get; set; }
|
||||
public long TransId { get; set; }
|
||||
public long Number { get; set; }
|
||||
public long Original { get; set; }
|
||||
public long DocNum { get; set; }
|
||||
public bool Exito { get; set; }
|
||||
public string Mensaje { get; set; }
|
||||
public string CodigoHttp { get; set; }
|
||||
public string U_BPP_MDCD { get; set; }
|
||||
public string Currency { get; set; }
|
||||
public string DocumentStatus { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
using Net.Connection.Attributes;
|
||||
using System.Data;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer
|
||||
{
|
||||
public class BE_BusinessPartners
|
||||
{
|
||||
[DBParameter(SqlDbType.VarChar, 15, ActionType.Everything)]
|
||||
public string CardCode { get; set; }
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 100, ActionType.Everything)]
|
||||
public string CardType { get; set; }
|
||||
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 100, ActionType.Everything)]
|
||||
public string CardName { get; set; }
|
||||
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 32, ActionType.Everything)]
|
||||
public string FederalTaxID { get; set; }
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 250, ActionType.Everything)]
|
||||
public string Address { get; set; }
|
||||
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 250, ActionType.Everything)]
|
||||
public string MailAddress { get; set; }
|
||||
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 250, ActionType.Everything)]
|
||||
public string EmailAddress { get; set; }
|
||||
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 250, ActionType.Everything)]
|
||||
public string Phone1 { get; set; }
|
||||
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 250, ActionType.Everything)]
|
||||
public string U_BPP_BPTD { get; set; }
|
||||
|
||||
|
||||
|
||||
public string EstadoSocio { get; set; }
|
||||
public string TablaEstadoSocioNegocio { get; set; }
|
||||
public string EstadoSocioStyle { get; set; }
|
||||
}
|
||||
|
||||
|
||||
public class BE_BusinessPartnersCustomersUpdate
|
||||
{
|
||||
[DBParameter(SqlDbType.VarChar, 15, ActionType.Everything)]
|
||||
public string CardCode { get; set; }
|
||||
|
||||
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 250, ActionType.Everything)]
|
||||
public string Address { get; set; }
|
||||
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 250, ActionType.Everything)]
|
||||
public string MailAddress { get; set; }
|
||||
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 250, ActionType.Everything)]
|
||||
public string EmailAddress { get; set; }
|
||||
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 250, ActionType.Everything)]
|
||||
public string Phone1 { get; set; }
|
||||
|
||||
public int PriceListNum { get; set; }
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public class BE_BusinessPartnersCustomers
|
||||
{
|
||||
[DBParameter(SqlDbType.VarChar, 15, ActionType.Everything)]
|
||||
public string CardCode { get; set; }
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 100, ActionType.Everything)]
|
||||
public string CardType { get; set; }
|
||||
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 100, ActionType.Everything)]
|
||||
public string CardName { get; set; }
|
||||
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 32, ActionType.Everything)]
|
||||
public string FederalTaxID { get; set; }
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 250, ActionType.Everything)]
|
||||
public string Address { get; set; }
|
||||
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 250, ActionType.Everything)]
|
||||
public string MailAddress { get; set; }
|
||||
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 250, ActionType.Everything)]
|
||||
public string EmailAddress { get; set; }
|
||||
|
||||
|
||||
[DBParameter(SqlDbType.VarChar, 250, ActionType.Everything)]
|
||||
public string Phone1 { get; set; }
|
||||
|
||||
[DBParameter(SqlDbType.Int, 0, ActionType.Everything)]
|
||||
public int U_BPP_BPTD { get; set; }
|
||||
public int PriceListNum { get; set; }
|
||||
//U_BPP_BPTD = 6,
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.CreditNotes
|
||||
{
|
||||
public class BE_CreditNotesBatchNumbers
|
||||
{
|
||||
public string BatchNumber { get; set; }
|
||||
public double Quantity { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.CreditNotes
|
||||
{
|
||||
public class BE_CreditNotesDocumentReferences
|
||||
{
|
||||
public int RefDocEntr { get; set; }
|
||||
public string RefObjType { get; set; }
|
||||
public DateTime IssueDate { get; set; }
|
||||
public string Remark { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.CreditNotes
|
||||
{
|
||||
public class BE_CreditNotesLine
|
||||
{
|
||||
public string ItemCode { get; set; }
|
||||
public string ItemDescription { get; set; }
|
||||
public decimal Quantity { get; set; }
|
||||
public decimal PriceAfterVAT { get; set; }
|
||||
public string WarehouseCode { get; set; }
|
||||
public string Currency { get; set; }
|
||||
public int? BaseType { get; set; }
|
||||
public int? BaseEntry { get; set; }
|
||||
public int? BaseLine { get; set; }
|
||||
public int LineNum { get; set; }
|
||||
public string U_ITC_ALMDES { get; set; }
|
||||
public List<BE_CreditNotesBatchNumbers> BatchNumbers { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.CreditNotes
|
||||
{
|
||||
public class BE_CreditNotesNotes
|
||||
{
|
||||
public DateTime DocDate { get; set; }
|
||||
public DateTime DocDueDate { get; set; }
|
||||
public string CardCode { get; set; }
|
||||
public string CardName { get; set; }
|
||||
public string DocCurrency { get; set; }
|
||||
public string PaymentGroupCode { get; set; }
|
||||
public string DocObjectCode { get; set; }
|
||||
public string NumAtCard { get; set; }
|
||||
public string U_SYP_MDSD { get; set; }
|
||||
public string U_SYP_MDCD { get; set; }
|
||||
public string U_SYP_MDTD { get; set; }
|
||||
public string U_SYP_MDSO { get; set; }
|
||||
public string U_SYP_MDCO { get; set; }
|
||||
public string U_SYP_MDTO { get; set; }
|
||||
public string U_SYP_FECHAREF { get; set; }
|
||||
public string U_SYP_TPONC { get; set; }
|
||||
public string U_SYP_MOTNC { get; set; }
|
||||
public string U_SYP_FEESUNAT { get; set; } = "000";
|
||||
public string U_SYP_FEEST { get; set; } = "PE";
|
||||
public string U_SYP_FEMEX { get; set; } = "1";
|
||||
public List<BE_CreditNotesLine> DocumentLines { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using Net.Connection.Attributes;
|
||||
using System.Data;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer
|
||||
{
|
||||
public class FE_BusinessPartners
|
||||
{
|
||||
[DBParameter(SqlDbType.VarChar, 30, ActionType.Everything)]
|
||||
public string CardCode { get; set; }
|
||||
[DBParameter(SqlDbType.VarChar, 100, ActionType.Everything)]
|
||||
public string CardName { get; set; }
|
||||
[DBParameter(SqlDbType.VarChar, 32, ActionType.Everything)]
|
||||
public string FederalTaxID { get; set; }
|
||||
[DBParameter(SqlDbType.VarChar, 20, ActionType.Everything)]
|
||||
public string Usuario { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.HR
|
||||
{
|
||||
public class BE_HojaRutaCreate
|
||||
{
|
||||
public string ModalidadTransporte { get; set; }
|
||||
public string Zona { get; set; }
|
||||
public string Territorio { get; set; }
|
||||
public string Despachador { get; set; }
|
||||
public DateTime FechaDespacho { get; set; }
|
||||
public string AgenciaTransporte { get; set; }
|
||||
public string NombreConductor { get; set; }
|
||||
public string LicenciaConductor { get; set; }
|
||||
public string PlacaVehiculo { get; set; }
|
||||
public string Estado { get; set; }
|
||||
public List<BE_HojaRutaCreateDetalle> Detalle { get; set; }
|
||||
}
|
||||
|
||||
public class HojaRutaSAP
|
||||
{
|
||||
//public int DocEntry { get; set; }
|
||||
//public int DocNum { get; set; }
|
||||
public int U_ARD_PHR_CNTDOC { get; set; }
|
||||
public string U_ARD_PHR_PLACA { get; set; }
|
||||
public string U_ARD_PHR_LICCON { get; set; }
|
||||
public string U_ARD_PHR_NOMCON { get; set; }
|
||||
public string U_ARD_PHR_MARVEH { get; set; }
|
||||
public DateTime U_ARD_PHR_FECCRE { get; set; }
|
||||
public string U_ARD_PHR_CERINS { get; set; }
|
||||
public string U_ARD_PHR_PLATOL { get; set; }
|
||||
public string U_ARD_PHR_NOMDESP { get; set; }
|
||||
public string U_ARD_PHR_ESTDESP { get; set; }
|
||||
public string U_ARD_PHR_OBSERVA { get; set; }
|
||||
public string U_ARD_PHR_ZONDIS { get; set; }
|
||||
public string U_ARD_PHR_TERRI { get; set; }
|
||||
public string U_ARD_PHR_MODTRANSP { get; set; }
|
||||
public string U_ARD_PHR_NOMAGENTRANS { get; set; }
|
||||
public string U_ARD_PHR_CODAGENTRANS { get; set; }
|
||||
public string U_ARD_PHR_RUCAGENTRANS { get; set; }
|
||||
public double U_MSV_PKH_PESM { get; set; }
|
||||
public string Object { get; set; } = "ARD_PHR";
|
||||
public string U_MSV_PKH_ORIG { get; set; }
|
||||
public List<HojaRutaDetailsEntities> ARD_PCK_HJRT_DETCollection { get; set; }
|
||||
}
|
||||
|
||||
public class HojaRutaDetailsEntities
|
||||
{
|
||||
public int DocEntry { get; set; }
|
||||
public int LineId { get; set; }
|
||||
public int VisOrder { get; set; }
|
||||
public string U_ARD_PHR_NROPED { get; set; }
|
||||
public string U_ARD_PHR_NOMCLI { get; set; }
|
||||
public string U_ARD_PHR_RUCCLI { get; set; }
|
||||
public string U_ARD_PHR_DIRDESP { get; set; }
|
||||
public string U_ARD_PHR_FORPAG { get; set; }
|
||||
public string U_ARD_PHR_NROGRE { get; set; }
|
||||
public string U_ARD_PHR_NROFACT { get; set; }
|
||||
public string U_ARD_PHR_ZONA { get; set; }
|
||||
public string U_ARD_PHR_TERRIT { get; set; }
|
||||
public DateTime U_ARD_PHR_FEENPED { get; set; }
|
||||
public string U_ARD_PHR_MONED { get; set; }
|
||||
public decimal U_ARD_TOTALFC { get; set; }
|
||||
public decimal U_ARD_PHR_TOTALPD { get; set; }
|
||||
public string U_MSV_PKH_DORV { get; set; }
|
||||
public string U_MSV_PKH_DGRE { get; set; }
|
||||
public string U_MSV_PKH_DCPE { get; set; }
|
||||
public int U_MSV_PKH_PEOV { get; set; }
|
||||
public string U_ITC_PHR_NOMVEN { get; set; }
|
||||
public string U_MSV_PKH_CGUI { get; set; }
|
||||
public string U_ARD_PHR_ESTDESP { get; set; } = "Embarcado";
|
||||
public string U_MSV_PKH_APLG { get; set; }
|
||||
public string Object { get; set; } = "ARD_PHR";
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.HR
|
||||
{
|
||||
public class BE_HojaRutaCreateDetalle
|
||||
{
|
||||
public string NumeroFactura { get; set; }
|
||||
public string CodigoInterno { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer
|
||||
{
|
||||
public class ITC_SOLINGMER
|
||||
{
|
||||
public string U_ITC_MDTI { get; set; }
|
||||
public string U_ITC_MDWC { get; set; }
|
||||
public string U_ITC_USRSOL { get; set; }
|
||||
public string U_ITC_MDCM { get; set; }
|
||||
public List<ITC_SOLINGMER_Details> ITC_SOLINGMERDETCollection { get; set; }
|
||||
}
|
||||
|
||||
public class ITC_SOLINGMER_Details
|
||||
{
|
||||
public int LineId { get; set; }
|
||||
public string U_ITC_CCOSTO { get; set; }
|
||||
public string U_ITC_ACCCODE { get; set; }
|
||||
public string U_ITC_ITEMNAME { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer
|
||||
{
|
||||
public class ITC_SOLSALMER
|
||||
{
|
||||
public string U_ITC_MDTS { get; set; }
|
||||
public string U_ITC_USRSOL { get; set; }
|
||||
public string U_ITC_MDCM { get; set; }
|
||||
public List<ITC_SOLSALMER_Details> ITCA_SOLSALMERDETCollection { get; set; }
|
||||
}
|
||||
|
||||
public class ITC_SOLSALMER_Details
|
||||
{
|
||||
public int LineId { get; set; }
|
||||
public string U_ITC_CCOST { get; set; }
|
||||
public string U_ITC_AccCode { get; set; }
|
||||
public string U_ITC_ItemName { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.InventoryGenEntries
|
||||
{
|
||||
public class BE_InventoryGenEntries
|
||||
{
|
||||
public DateTime DocDate { get; set; }
|
||||
public DateTime DocDueDate { get; set; }
|
||||
public string DocCurrency { get; set; }
|
||||
public string PaymentGroupCode { get; set; }
|
||||
public string DocObjectCode { get; set; }
|
||||
public double DocRate { get; set; }
|
||||
public string U_SYP_TPOENTME { get; set; }
|
||||
public string U_ITC_WMS_NUMINV { get; set; }
|
||||
public string U_ARD_PERSOLIC { get; set; }
|
||||
public string Comments { get; set; }
|
||||
|
||||
public List<BE_InventoryGenEntriesLine> DocumentLines { get; set; }
|
||||
}
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.InventoryGenEntries
|
||||
{
|
||||
public class BE_InventoryGenEntriesBatchNumbers
|
||||
{
|
||||
public string BatchNumber { get; set; }
|
||||
public double Quantity { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.InventoryGenEntries
|
||||
{
|
||||
public class BE_InventoryGenEntriesLine
|
||||
{
|
||||
public int LineNum { get; set; }
|
||||
public string ItemCode { get; set; }
|
||||
public string ItemDescription { get; set; }
|
||||
public double Quantity { get; set; }
|
||||
public double PriceAfterVAT { get; set; }
|
||||
public string WarehouseCode { get; set; }
|
||||
public string Currency { get; set; }
|
||||
public double LineTotal { get; set; }
|
||||
public string AccountCode { get; set; }
|
||||
public string CostingCode { get; set; } = "";
|
||||
public List<BE_InventoryGenEntriesBatchNumbers> BatchNumbers { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.InventoryGenExits
|
||||
{
|
||||
public class BE_InventoryGenExits
|
||||
{
|
||||
public DateTime DocDate { get; set; }
|
||||
public DateTime DocDueDate { get; set; }
|
||||
public string DocCurrency { get; set; }
|
||||
public string PaymentGroupCode { get; set; }
|
||||
public string DocObjectCode { get; set; }
|
||||
|
||||
//public string DocObjectCode2 { get; set; }
|
||||
public double DocRate { get; set; }
|
||||
public string U_SYP_TPOSALME { get; set; }
|
||||
public string U_ITC_WMS_NUMINV { get; set; }
|
||||
public string U_ARD_PERSOLIC { get; set; }
|
||||
public string Comments { get; set; }
|
||||
public List<BE_InventoryGenExitsLine> DocumentLines { get; set; }
|
||||
}
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.InventoryGenExits
|
||||
{
|
||||
public class BE_InventoryGenExitsBatchNumbers
|
||||
{
|
||||
public string BatchNumber { get; set; }
|
||||
public double Quantity { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.InventoryGenExits
|
||||
{
|
||||
public class BE_InventoryGenExitsLine
|
||||
{
|
||||
public int LineNum { get; set; }
|
||||
public string ItemCode { get; set; }
|
||||
public string ItemDescription { get; set; }
|
||||
public double Quantity { get; set; }
|
||||
public double PriceAfterVAT { get; set; }
|
||||
public string WarehouseCode { get; set; }
|
||||
public string Currency { get; set; }
|
||||
public double LineTotal { get; set; }
|
||||
public string AccountCode { get; set; }
|
||||
public string CostingCode { get; set; } = "";
|
||||
public List<BE_InventoryGenExitsBatchNumbers> BatchNumbers { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.InventoryTransferRequest
|
||||
{
|
||||
// Shape minimo del GET InventoryTransferRequests({docEntry}) de Service Layer -
|
||||
// solo lo que SolicitudTransferenciaRepository.Update necesita leer (el Rate
|
||||
// real de cada linea antes del PATCH). Los campos del JSON de SAP que no estan
|
||||
// mapeados aca se ignoran al deserializar (comportamiento default de
|
||||
// Newtonsoft.Json), no hace falta mapear el documento completo.
|
||||
public class BE_InventoryTransferRequest
|
||||
{
|
||||
public int DocEntry { get; set; }
|
||||
public List<BE_InventoryTransferRequestLine> StockTransferLines { get; set; }
|
||||
}
|
||||
|
||||
public class BE_InventoryTransferRequestLine
|
||||
{
|
||||
public int LineNum { get; set; }
|
||||
public double Rate { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.Invoices
|
||||
{
|
||||
public class BE_Invoices
|
||||
{
|
||||
public DateTime DocDate { get; set; }
|
||||
public DateTime DocDueDate { get; set; }
|
||||
public string CardCode { get; set; }
|
||||
public string CardName { get; set; }
|
||||
public string DocCurrency { get; set; }
|
||||
public string PaymentGroupCode { get; set; }
|
||||
public string DocObjectCode { get; set; }
|
||||
public int DocEntry { get; set; }
|
||||
public string U_SYP_MDSD { get; set; }
|
||||
public string U_SYP_MDCD { get; set; }
|
||||
public string U_SYP_MDTD { get; set; }
|
||||
public List<BE_InvoicesLine> DocumentLines { get; set; }
|
||||
}
|
||||
public class BE_InvoicesConsulta
|
||||
{
|
||||
public DateTime DocDate { get; set; }
|
||||
public DateTime DocDueDate { get; set; }
|
||||
public string CardCode { get; set; }
|
||||
public string CardName { get; set; }
|
||||
public string DocCurrency { get; set; }
|
||||
public string PaymentGroupCode { get; set; }
|
||||
public string DocObjectCode { get; set; }
|
||||
public int DocEntry { get; set; }
|
||||
public string DocumentStatus { get; set; }
|
||||
public string U_SYP_MDSD { get; set; }
|
||||
public string U_SYP_MDCD { get; set; }
|
||||
public string U_SYP_MDTD { get; set; }
|
||||
public List<BE_InvoicesLine> DocumentLines { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.Invoices
|
||||
{
|
||||
public class BE_InvoicesBatchNumbers
|
||||
{
|
||||
public string BatchNumber { get; set; }
|
||||
public double Quantity { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.Invoices
|
||||
{
|
||||
public class BE_InvoicesLine
|
||||
{
|
||||
public int LineNum { get; set; }
|
||||
public string ItemCode { get; set; }
|
||||
public string ItemDescription { get; set; }
|
||||
public decimal Quantity { get; set; }
|
||||
public decimal PriceAfterVAT { get; set; }
|
||||
public string WarehouseCode { get; set; }
|
||||
public string Currency { get; set; }
|
||||
public int? BaseLine { get; set; }
|
||||
public List<BE_InvoicesBatchNumbers> BatchNumbers { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using System;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.Items
|
||||
{
|
||||
public class BE_ItemStock
|
||||
{
|
||||
public string ItemCode { get; set; }
|
||||
public string ItemName { get; set; }
|
||||
public string WhsCode { get; set; }
|
||||
public string WhsName { get; set; }
|
||||
public string DistNumber { get; set; }
|
||||
public DateTime ExpDate { get; set; }
|
||||
public string BinCode { get; set; }
|
||||
public double OnHandQty { get; set; }
|
||||
public double AvgPrice { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.PurchaseDeliveryNotes
|
||||
{
|
||||
public class BE_PurchaseDeliveryNotes
|
||||
{
|
||||
public DateTime DocDate { get; set; }
|
||||
public DateTime DocDueDate { get; set; }
|
||||
public string CardCode { get; set; }
|
||||
public string CardName { get; set; }
|
||||
public string DocCurrency { get; set; }
|
||||
public string PaymentGroupCode { get; set; }
|
||||
public string DocObjectCode { get; set; }
|
||||
public string NumAtCard { get; set; }
|
||||
public string U_SYP_MDTD { get; set; }
|
||||
public string U_SYP_MDSD { get; set; }
|
||||
public string U_SYP_MDCD { get; set; }
|
||||
public List<BE_PurchaseDeliveryNotesLine> DocumentLines { get; set; }
|
||||
}
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.PurchaseDeliveryNotes
|
||||
{
|
||||
public class BE_PurchaseDeliveryNotesBatchNumbers
|
||||
{
|
||||
public string BatchNumber { get; set; }
|
||||
public double Quantity { get; set; }
|
||||
}
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.PurchaseDeliveryNotes
|
||||
{
|
||||
public class BE_PurchaseDeliveryNotesLine
|
||||
{
|
||||
public string ItemCode { get; set; }
|
||||
public string ItemDescription { get; set; }
|
||||
public double Quantity { get; set; }
|
||||
public decimal PriceAfterVAT { get; set; }
|
||||
public string WarehouseCode { get; set; }
|
||||
public string Currency { get; set; }
|
||||
public int? BaseType { get; set; }
|
||||
public int? BaseEntry { get; set; }
|
||||
public int? BaseLine { get; set; }
|
||||
public int LineNum { get; set; }
|
||||
public List<BE_PurchaseDeliveryNotesBatchNumbers> BatchNumbers { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.PurchaseInvoices
|
||||
{
|
||||
public class BE_PurchaseInvoices
|
||||
{
|
||||
public DateTime DocDate { get; set; }
|
||||
public DateTime DocDueDate { get; set; }
|
||||
public string CardCode { get; set; }
|
||||
public string CardName { get; set; }
|
||||
public string DocCurrency { get; set; }
|
||||
public string PaymentGroupCode { get; set; }
|
||||
public string DocObjectCode { get; set; }
|
||||
public int DocEntry { get; set; }
|
||||
public List<BE_PurchaseInvoicesLine> DocumentLines { get; set; }
|
||||
}
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.PurchaseInvoices
|
||||
{
|
||||
public class BE_PurchaseInvoicesBatchNumbers
|
||||
{
|
||||
public string BatchNumber { get; set; }
|
||||
public string Quantity { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.PurchaseInvoices
|
||||
{
|
||||
public class BE_PurchaseInvoicesLine
|
||||
{
|
||||
public int LineNum { get; set; }
|
||||
public string ItemCode { get; set; }
|
||||
public string ItemDescription { get; set; }
|
||||
public decimal Quantity { get; set; }
|
||||
public decimal PriceAfterVAT { get; set; }
|
||||
public string WarehouseCode { get; set; }
|
||||
public string Currency { get; set; }
|
||||
|
||||
public List<BE_PurchaseInvoicesBatchNumbers> BatchNumbers { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.PurchaseOrders
|
||||
{
|
||||
public class BE_PurchaseOrders
|
||||
{
|
||||
public DateTime DocDate { get; set; }
|
||||
public DateTime DocDueDate { get; set; }
|
||||
public string CardCode { get; set; }
|
||||
public string CardName { get; set; }
|
||||
public string DocCurrency { get; set; }
|
||||
public string PaymentGroupCode { get; set; }
|
||||
public string DocObjectCode { get; set; }
|
||||
public int DocEntry { get; set; }
|
||||
public List<BE_PurchaseOrdersLine> DocumentLines { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.PurchaseOrders
|
||||
{
|
||||
public class BE_PurchaseOrdersBatchNumbers
|
||||
{
|
||||
public string BatchNumber { get; set; }
|
||||
public string Quantity { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.PurchaseOrders
|
||||
{
|
||||
public class BE_PurchaseOrdersLine
|
||||
{
|
||||
public int LineNum { get; set; }
|
||||
public string ItemCode { get; set; }
|
||||
public string ItemDescription { get; set; }
|
||||
public decimal Quantity { get; set; }
|
||||
public decimal PriceAfterVAT { get; set; }
|
||||
public string WarehouseCode { get; set; }
|
||||
public string Currency { get; set; }
|
||||
|
||||
public List<BE_PurchaseOrdersBatchNumbers> BatchNumbers { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.ReturnRequest
|
||||
{
|
||||
public class BE_ReturnRequest
|
||||
{
|
||||
public DateTime DocDate { get; set; }
|
||||
public DateTime DocDueDate { get; set; }
|
||||
public string CardCode { get; set; }
|
||||
public string CardName { get; set; }
|
||||
public string DocCurrency { get; set; }
|
||||
public string PaymentGroupCode { get; set; }
|
||||
public string DocObjectCode { get; set; }
|
||||
public int DocEntry { get; set; }
|
||||
public string U_SYP_TPONC { get; set; }
|
||||
public string U_SYP_MOTNC { get; set; }
|
||||
public string U_SYP_MDSO { get; set; }
|
||||
public string U_SYP_MDCO { get; set; }
|
||||
public string U_SYP_MDTO { get; set; }
|
||||
public DateTime U_SYP_FECHAREF { get; set; }
|
||||
public List<BE_ReturnRequestLine> DocumentLines { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.ReturnRequest
|
||||
{
|
||||
public class BE_ReturnRequestBatchNumbers
|
||||
{
|
||||
public string BatchNumber { get; set; }
|
||||
public string Quantity { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.ReturnRequest
|
||||
{
|
||||
public class BE_ReturnRequestLine
|
||||
{
|
||||
public int LineNum { get; set; }
|
||||
public string ItemCode { get; set; }
|
||||
public string ItemDescription { get; set; }
|
||||
public decimal Quantity { get; set; }
|
||||
public decimal PriceAfterVAT { get; set; }
|
||||
public string WarehouseCode { get; set; }
|
||||
public string Currency { get; set; }
|
||||
public int? BaseEntry { get; set; }
|
||||
public int? BaseLine { get; set; }
|
||||
public int? BaseType { get; set; }
|
||||
public string U_ITC_ALMDES { get;set; }
|
||||
public List<BE_ReturnRequestBatchNumbers> BatchNumbers { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.StockTransfer
|
||||
{
|
||||
public class BE_StockTransfer
|
||||
{
|
||||
public DateTime DocDate { get; set; }
|
||||
public DateTime DueDate { get; set; }
|
||||
public string Comments { get; set; }
|
||||
public string FromWarehouse { get; set; }
|
||||
public string ToWarehouse { get; set; }
|
||||
public DateTime TaxDate { get; set; }
|
||||
public string U_SYP_MDTS { get; set; }
|
||||
public string U_SYP_MDMT { get; set; }
|
||||
public string U_ITC_WMS_NUMINV { get; set; }
|
||||
public string U_SYP_TPOENTME { get; set; }
|
||||
public List<BE_StockTransferLine> StockTransferLines { get; set; }
|
||||
public List<BE_StockTransferDocumentReferences> DocumentReferences { get; set; }
|
||||
}
|
||||
|
||||
public class BE_StockTransferAutomatico
|
||||
{
|
||||
public DateTime DocDate { get; set; }
|
||||
public DateTime DueDate { get; set; }
|
||||
public string Comments { get; set; }
|
||||
public string FromWarehouse { get; set; }
|
||||
public string ToWarehouse { get; set; }
|
||||
public DateTime TaxDate { get; set; }
|
||||
public string U_SYP_MDTS { get; set; }
|
||||
public string U_SYP_MDMT { get; set; }
|
||||
public string U_ITC_WMS_NUMINV { get; set; }
|
||||
public string U_SYP_TPOENTME { get; set; }
|
||||
public int PriceList { get; set; }
|
||||
public List<BE_StockTransferLine> StockTransferLines { get; set; }
|
||||
public List<BE_StockTransferDocumentReferences> DocumentReferences { get; set; }
|
||||
}
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.StockTransfer
|
||||
{
|
||||
public class BE_StockTransferDocumentReferences
|
||||
{
|
||||
public int RefDocEntr { get; set; }
|
||||
public string RefObjType { get; set; }
|
||||
public string Remark { get; set; }
|
||||
public DateTime IssueDate { get; set; } = DateTime.Now;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.StockTransfer
|
||||
{
|
||||
public class BE_StockTransferLine
|
||||
{
|
||||
public int LineNum { get; set; }
|
||||
public string ItemCode { get; set; }
|
||||
public string ItemDescription { get; set; }
|
||||
public double Quantity { get; set; }
|
||||
public string WarehouseCode { get; set; }
|
||||
public string FromWarehouseCode { get; set; }
|
||||
public int? BaseLine { get; set; }
|
||||
public int? BaseEntry { get; set; }
|
||||
public string BaseType { get; set; }
|
||||
public List<BE_StockTransferLineBatchNumber> BatchNumbers { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.ServicesLayer.StockTransfer
|
||||
{
|
||||
public class BE_StockTransferLineBatchNumber
|
||||
{
|
||||
public string BatchNumber { get; set; }
|
||||
public double Quantity { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
namespace Net.Business.Entities.WMS.HojaRuta
|
||||
{
|
||||
public class BE_HojaRutaEntities
|
||||
{
|
||||
public int DocEntry { get; set; }
|
||||
public int IdEstadoCubico { get; set; }
|
||||
public string Estado { get; set; }
|
||||
public string Proceso { get; set; }
|
||||
public string CodMotivo { get; set; }
|
||||
public string HoraInicio { get; set; }
|
||||
public string FinRuta { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Net.Business.Entities.WMS.Inventario
|
||||
{
|
||||
public class BE_Inventario
|
||||
{
|
||||
public DateTime Fecha { get; set; }
|
||||
public DateTime FechaVencimiento { get; set; }
|
||||
public string TipoMovimientoSAP { get; set; }
|
||||
public string TipoMovimiento { get; set; }
|
||||
public string TipoInventario { get; set; }
|
||||
public string Almacen { get; set; }
|
||||
public string SubAlmacen { get; set; }
|
||||
public string NroInventario { get; set; }
|
||||
public List<BE_InventarioItems> Detalle { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Net.Business.Entities.WMS.Inventario
|
||||
{
|
||||
public class BE_InventarioItems
|
||||
{
|
||||
public string CodigoArticulo { get; set; }
|
||||
public string DescripcionArticulo { get; set; }
|
||||
public decimal Cantidad { get; set; }
|
||||
public string UnidadMedida { get; set; }
|
||||
public double PrecioPromedio { get; set; }
|
||||
public string CentroCosto { get; set; }
|
||||
public List<BE_InventarioItemsLotes> Lotes { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
using System;
|
||||
|
||||
namespace Net.Business.Entities.WMS.Inventario
|
||||
{
|
||||
public class BE_InventarioItemsLotes
|
||||
{
|
||||
public string Lote { get; set; }
|
||||
public DateTime FechaVencimiento { get; set; }
|
||||
public decimal Cantidad { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
namespace Net.Business.Entities.WMS.Picking
|
||||
{
|
||||
public class BE_PickingDetalle
|
||||
{
|
||||
public int Item { get; set; }
|
||||
public string CodigoArticulo { get; set; }
|
||||
public string CodigoUM { get; set; }
|
||||
public string LoteProducto { get; set; }
|
||||
public decimal CantidadPedida { get; set; }
|
||||
public string CodigoSubAlmacen { get; set; }
|
||||
public string Estado { get; set; }
|
||||
public double PrecioPromedio { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.WMS.Picking
|
||||
{
|
||||
public class BE_PickingRequest
|
||||
{
|
||||
public string NumOrden { get; set; }
|
||||
public DateTime FechaOrden { get; set; }
|
||||
public string FechaEntrega { get; set; }
|
||||
public string CodigoAlmacen { get; set; }
|
||||
public DateTime FechaLlegada { get; set; }
|
||||
public string CodigoERPCliente { get; set; }
|
||||
public string CodigoERPDireccion { get; set; }
|
||||
public int IdTipo { get; set; }
|
||||
public int IdTipoDoc { get; set; }
|
||||
public string Observacion { get; set; }
|
||||
public int IdCondicion { get; set; }
|
||||
public int Accion { get; set; }
|
||||
public int DocEntry { get; set; }
|
||||
public int IdEstadoCubico { get; set; }
|
||||
public string Proceso { get; set; }
|
||||
public string CodMotivo { get; set; }
|
||||
// "preliminar" | "cierre" - cualquier otro valor o ausente se trata como
|
||||
// "preliminar" (default seguro, nunca crea documentos en SAP por accidente).
|
||||
public string Notificacion { get; set; }
|
||||
public decimal Longitud { get; set; }
|
||||
public decimal Latitud { get; set; }
|
||||
public List<BE_PickingDetalle> Detalle { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace Net.Business.Entities.WMS.ProcesoPicking
|
||||
{
|
||||
public class BE_ProcesoPicking
|
||||
{
|
||||
public string Code { get; set; }
|
||||
public string U_ITCA_PROCESO { get; set; }
|
||||
public string U_ITCA_GNRPROC { get; set; }
|
||||
public string U_ITCA_ESTADO { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
namespace Net.Business.Entities.WMS.Recibo
|
||||
{
|
||||
public class BE_ReciboDetalle
|
||||
{
|
||||
public int Item { get; set; }
|
||||
public string CodigoArticulo { get; set; }
|
||||
public string CodigoUM { get; set; }
|
||||
public string LoteProducto { get; set; }
|
||||
public decimal CantidadPedida { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.WMS.Recibo
|
||||
{
|
||||
public class BE_ReciboRequest
|
||||
{
|
||||
public string NumOrden { get; set; }
|
||||
public DateTime FechaOrden { get; set; }
|
||||
public string CodigoAlmacen { get; set; }
|
||||
public DateTime FechaLlegada { get; set; }
|
||||
public string CodigoERPProveedor { get; set; }
|
||||
public int IdTipo { get; set; }
|
||||
public int IdTipoDoc { get; set; }
|
||||
public string Observacion { get; set; }
|
||||
public int IdCuenta { get; set; }
|
||||
public int DocEntry { get; set; }
|
||||
public int Accion { get; set; }
|
||||
public string DocImportacion { get; set; }
|
||||
public string U_SYP_MDTD { get; set; }
|
||||
public string U_SYP_MDSD { get; set; }
|
||||
public string U_SYP_MDCD { get; set; }
|
||||
public string Comentario { get; set; }
|
||||
public List<BE_ReciboDetalle> Detalle { get; set; }
|
||||
}
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Net.Business.Entities.WMS.SolicitudTransferencia
|
||||
{
|
||||
// Contrato propio del PATCH de SolicitudTransferencia - funcionalidad nueva, sin
|
||||
// equivalente en el .NET original. El PATCH real SOLO actualiza cantidades de
|
||||
// linea existentes en SAP (InventoryTransferRequests) y ELIMINA una linea
|
||||
// cuando Cantidad = 0 - no toca fechas, almacenes ni ningun otro campo del
|
||||
// documento, por eso no reusa BE_TransferenciaRequest.
|
||||
public class BE_SolicitudTransferenciaPatchDetalle
|
||||
{
|
||||
public int Linea { get; set; }
|
||||
public double Cantidad { get; set; }
|
||||
}
|
||||
|
||||
public class BE_SolicitudTransferenciaPatchRequest
|
||||
{
|
||||
// No se usa para el PATCH a SAP - solo trazabilidad en el log de auditoria.
|
||||
public string NumOrden { get; set; }
|
||||
public List<BE_SolicitudTransferenciaPatchDetalle> Detalle { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
namespace Net.Business.Entities.WMS.Transferencia
|
||||
{
|
||||
public class BE_TransferenciaDetalle
|
||||
{
|
||||
public int Item { get; set; }
|
||||
public string CodigoArticulo { get; set; }
|
||||
public string CodigoUM { get; set; }
|
||||
public string LoteProducto { get; set; }
|
||||
public decimal CantidadPedida { get; set; }
|
||||
public int Accion { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Entities.WMS.Transferencia
|
||||
{
|
||||
public class BE_TransferenciaRequest
|
||||
{
|
||||
public string NumOrden { get; set; }
|
||||
public DateTime FechaOrden { get; set; }
|
||||
public int IdTipo { get; set; }
|
||||
public string CodigoAlmacenOrigen { get; set; }
|
||||
public string CodigoSubAlmacenOrigen { get; set; }
|
||||
public int IdCondicionOrigen { get; set; }
|
||||
public string CodigoAlmacenDestino { get; set; }
|
||||
public string CodigoSubAlmacenDestino { get; set; }
|
||||
public int IdCondicionDestino { get; set; }
|
||||
public string Observacion { get; set; }
|
||||
public int IdCuenta { get; set; }
|
||||
public int Accion { get; set; }
|
||||
public int DocEntry { get; set; }
|
||||
public int DocEntryEM { get; set; }
|
||||
|
||||
public List<BE_TransferenciaDetalle> TransferenciaDetalles { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"version": 1,
|
||||
"isRoot": true,
|
||||
"tools": {
|
||||
"dotnet-ef": {
|
||||
"version": "5.0.8",
|
||||
"commands": [
|
||||
"dotnet-ef"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Net.Business.DTO;
|
||||
using Net.Business.DTO.Authenticate;
|
||||
using Net.Data;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Net.Business.Services.Controllers
|
||||
{
|
||||
[Route("api/[controller]/[action]")]
|
||||
[ApiController]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ApiExplorerSettings(GroupName = "ApiSAPWMS")]
|
||||
public class AuthenticateController : ControllerBase
|
||||
{
|
||||
private readonly IRepositoryWrapper _repository;
|
||||
public AuthenticateController(IRepositoryWrapper repository)
|
||||
{
|
||||
this._repository = repository;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Obtiene Token de Acceso
|
||||
/// </summary>
|
||||
/// <param name="value">Parametros de filtros</param>
|
||||
/// <returns>Devuelve Token de Acceso</returns>
|
||||
[HttpPost]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||
public async Task<IActionResult> Token([FromBody] Dto_AuthenticateRequest value)
|
||||
{
|
||||
|
||||
var objectGetAll = await _repository.Authenticate.GetToken(value.RetornaModelo());
|
||||
|
||||
if (objectGetAll.StatusCode == -1)
|
||||
{
|
||||
return BadRequest(objectGetAll);
|
||||
}
|
||||
|
||||
return Ok(objectGetAll.Data);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Net.Business.DTO.WMS.HojaRuta;
|
||||
using Net.Business.DTO.WMS.Picking;
|
||||
using Net.Business.Services.Log;
|
||||
using Net.Data;
|
||||
using Newtonsoft.Json;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Net.Business.Services.Controllers
|
||||
{
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ApiExplorerSettings(GroupName = "ApiSAPWMS")]
|
||||
[Authorize(AuthenticationSchemes = "Bearer")]
|
||||
public class HojaRutaController : ControllerBase
|
||||
{
|
||||
private readonly IRepositoryWrapper _repository;
|
||||
public HojaRutaController(IRepositoryWrapper repository)
|
||||
{
|
||||
this._repository = repository;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[ProducesResponseType(StatusCodes.Status201Created)]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<IActionResult> POST([FromBody] Dto_HojaRutaCreate value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes("Master object is null"), "Hoja Ruta", "", "", "0", "0");
|
||||
return BadRequest("Master object is null");
|
||||
}
|
||||
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes("Invalid model object"), "Hoja Ruta", "", "", "0", "0");
|
||||
return BadRequest("Invalid model object");
|
||||
}
|
||||
|
||||
var ObjectNew = await _repository.HR.SetCreateHojaRuta(value.RetornaModelo());
|
||||
|
||||
if (ObjectNew.StatusCode != 200)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ObjectNew)), "Hoja Ruta", "", "", "0", "0");
|
||||
return BadRequest(ObjectNew);
|
||||
}
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ObjectNew)), "Hoja Ruta", "", "", ObjectNew?.DocNum.ToString(), ObjectNew?.DocEntry.ToString());
|
||||
return Ok(ObjectNew);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Net.Business.DTO.WMS.Inventario;
|
||||
using Net.Business.Services.Log;
|
||||
using Net.Data;
|
||||
using Newtonsoft.Json;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Net.Business.Services.Controllers
|
||||
{
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ApiExplorerSettings(GroupName = "ApiSAPWMS")]
|
||||
[Authorize(AuthenticationSchemes = "Bearer")]
|
||||
public class InventarioController : ControllerBase
|
||||
{
|
||||
private readonly IRepositoryWrapper _repository;
|
||||
public InventarioController(IRepositoryWrapper repository)
|
||||
{
|
||||
this._repository = repository;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Registra Proceso de Inventario
|
||||
/// </summary>
|
||||
[HttpPost]
|
||||
[ProducesResponseType(StatusCodes.Status201Created)]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<IActionResult> Inventario([FromBody] Dto_Inventario value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes("Master object is null"), "Inventario", "0", "0", "0", "0");
|
||||
return BadRequest("Master object is null");
|
||||
}
|
||||
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes("Invalid model object"), "Inventario", "0", "0", "0", "0");
|
||||
return BadRequest("Invalid model object");
|
||||
}
|
||||
|
||||
var ObjectNew = await _repository.Inventario.Create(value.RetornaModelo());
|
||||
|
||||
if (ObjectNew.StatusCode != 200)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ObjectNew)), "Inventario", "0", "0", "0", "0");
|
||||
return BadRequest(ObjectNew);
|
||||
}
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ObjectNew)), "Inventario", "0", "0", ObjectNew?.DocNum.ToString(), ObjectNew?.DocEntry.ToString());
|
||||
return Ok(ObjectNew);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Net.Data;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Net.Business.Services.Controllers
|
||||
{
|
||||
[Route("api/[controller]/[action]")]
|
||||
[ApiController]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ApiExplorerSettings(GroupName = "ApiSAPWMS")]
|
||||
[Authorize(AuthenticationSchemes = "Bearer")]
|
||||
public class ItemController : ControllerBase
|
||||
{
|
||||
private readonly IRepositoryWrapper _repository;
|
||||
public ItemController(IRepositoryWrapper repository)
|
||||
{
|
||||
this._repository = repository;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[ProducesResponseType(StatusCodes.Status201Created)]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<IActionResult> Stock()
|
||||
{
|
||||
var ObjectNew = await _repository.Items.GetStockItem();
|
||||
|
||||
if (ObjectNew.StatusCode != 0)
|
||||
{
|
||||
return BadRequest(ObjectNew);
|
||||
}
|
||||
return Ok(ObjectNew);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Net.Business.DTO.WMS.HojaRuta;
|
||||
using Net.Business.DTO.WMS.Picking;
|
||||
using Net.Business.Services.Log;
|
||||
using Net.Data;
|
||||
using Newtonsoft.Json;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Net.Business.Services.Controllers
|
||||
{
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ApiExplorerSettings(GroupName = "ApiSAPWMS")]
|
||||
[Authorize(AuthenticationSchemes = "Bearer")]
|
||||
public class PickingController : ControllerBase
|
||||
{
|
||||
private readonly IRepositoryWrapper _repository;
|
||||
public PickingController(IRepositoryWrapper repository)
|
||||
{
|
||||
this._repository = repository;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[ProducesResponseType(StatusCodes.Status201Created)]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<IActionResult> POST([FromBody] Dto_PickingRequest value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes("Master object is null"), "Picking", value.NumOrden, value.DocEntry.ToString(), "0", "0");
|
||||
return BadRequest("Master object is null");
|
||||
}
|
||||
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes("Invalid model object"), "Picking", value.NumOrden, value.DocEntry.ToString(), "0", "0");
|
||||
return BadRequest("Invalid model object");
|
||||
}
|
||||
|
||||
var ObjectNew = await _repository.Picking.Create(value.RetornaModelo());
|
||||
|
||||
if (ObjectNew.StatusCode != 200)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ObjectNew)), "Picking", value.NumOrden, value.DocEntry.ToString(), "0", "0");
|
||||
return BadRequest(ObjectNew);
|
||||
}
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ObjectNew)), "Picking", value.NumOrden, value.DocEntry.ToString(), ObjectNew?.DocNum.ToString(), ObjectNew?.DocEntry.ToString());
|
||||
return Ok(ObjectNew);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[Route("[action]")]
|
||||
[ProducesResponseType(StatusCodes.Status201Created)]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<IActionResult> Ruta([FromBody] Dto_HojaRuta value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes("Master object is null"), "Hoja Ruta", value.DocEntry.ToString(), value.DocEntry.ToString(), "0", "0");
|
||||
return BadRequest("Master object is null");
|
||||
}
|
||||
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes("Invalid model object"), "Hoja Ruta", value.DocEntry.ToString(), value.DocEntry.ToString(), "0", "0");
|
||||
return BadRequest("Invalid model object");
|
||||
}
|
||||
|
||||
var ObjectNew = await _repository.Picking.CreateHojaRuta(value.RetornaModelo());
|
||||
|
||||
if (ObjectNew.StatusCode != 200)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ObjectNew)), "Hoja Ruta", value.DocEntry.ToString(), value.DocEntry.ToString(), "0", "0");
|
||||
return BadRequest(ObjectNew);
|
||||
}
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ObjectNew)), "Hoja Ruta", value.DocEntry.ToString(), value.DocEntry.ToString(), ObjectNew?.DocNum.ToString(), ObjectNew?.DocEntry.ToString());
|
||||
return Ok(ObjectNew);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[Route("HojaRuta/{docEntry}/Cerrar")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<IActionResult> CerrarHojaRuta(int docEntry)
|
||||
{
|
||||
var ObjectNew = await _repository.Picking.CerrarHojaRuta(docEntry);
|
||||
|
||||
if (ObjectNew.StatusCode != 200)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new { docEntry })), Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ObjectNew)), "Hoja Ruta", docEntry.ToString(), docEntry.ToString(), "0", "0");
|
||||
return BadRequest(ObjectNew);
|
||||
}
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new { docEntry })), Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ObjectNew)), "Hoja Ruta", docEntry.ToString(), docEntry.ToString(), ObjectNew?.DocNum.ToString(), ObjectNew?.DocEntry.ToString());
|
||||
return Ok(ObjectNew);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Net.Business.DTO.WMS.Recibo;
|
||||
using Net.Business.Services.Log;
|
||||
using Net.Data;
|
||||
using Newtonsoft.Json;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Net.Business.Services.Controllers
|
||||
{
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ApiExplorerSettings(GroupName = "ApiSAPWMS")]
|
||||
[Authorize(AuthenticationSchemes = "Bearer")]
|
||||
public class ReciboController : ControllerBase
|
||||
{
|
||||
private readonly IRepositoryWrapper _repository;
|
||||
public ReciboController(IRepositoryWrapper repository)
|
||||
{
|
||||
this._repository = repository;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[ProducesResponseType(StatusCodes.Status201Created)]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<IActionResult> POST([FromBody] Dto_ReciboRequest value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes("Master object is null"), "Recibo", value.NumOrden, value.DocEntry.ToString(), "0", "0");
|
||||
return BadRequest("Master object is null");
|
||||
}
|
||||
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes("Invalid model object"), "Recibo", value.NumOrden, value.DocEntry.ToString(), "0", "0");
|
||||
return BadRequest("Invalid model object");
|
||||
}
|
||||
|
||||
var ObjectNew = await _repository.Recibo.Create(value.RetornaModelo());
|
||||
|
||||
if (ObjectNew.StatusCode != 200)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ObjectNew)), "Recibo", value.NumOrden, value.DocEntry.ToString(), "0", "0");
|
||||
return BadRequest(ObjectNew);
|
||||
}
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ObjectNew)), "Recibo", value.NumOrden, value.DocEntry.ToString(), ObjectNew?.DocNum.ToString(), ObjectNew?.DocEntry.ToString());
|
||||
return Ok(ObjectNew);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Net.Business.DTO.WMS.SolicitudTransferencia;
|
||||
using Net.Business.Entities;
|
||||
using Net.Business.Services.Log;
|
||||
using Net.Data;
|
||||
using Newtonsoft.Json;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Net.Business.Services.Controllers
|
||||
{
|
||||
// Modulo 100% nuevo (sin equivalente en el .NET original) - ver
|
||||
// docs/SOLICITUD_TRANSFERENCIA.md para el contrato completo.
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ApiExplorerSettings(GroupName = "ApiSAPWMS")]
|
||||
[Authorize(AuthenticationSchemes = "Bearer")]
|
||||
public class SolicitudTransferenciaController : ControllerBase
|
||||
{
|
||||
private readonly IRepositoryWrapper _repository;
|
||||
public SolicitudTransferenciaController(IRepositoryWrapper repository)
|
||||
{
|
||||
this._repository = repository;
|
||||
}
|
||||
|
||||
// Responde 200 con el BE_ResultadoTransaccion completo en vez de 204 -
|
||||
// decision deliberada: un 204 no puede llevar body (RFC 7231 §6.3.5) y
|
||||
// muchos clientes HTTP, incluido HttpClient de .NET, no lo leen si el
|
||||
// status es 204 - ver docs/SOLICITUD_TRANSFERENCIA.md.
|
||||
[HttpPatch]
|
||||
[Route("{docEntry}")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<IActionResult> Patch(int docEntry, [FromBody] Dto_SolicitudTransferenciaPatchRequest value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes("Master object is null"), "SolicitudTraslado", "0", docEntry.ToString(), "0", "0");
|
||||
return BadRequest("Master object is null");
|
||||
}
|
||||
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes("Invalid model object"), "SolicitudTraslado", value.NumOrden, docEntry.ToString(), "0", "0");
|
||||
return BadRequest("Invalid model object");
|
||||
}
|
||||
|
||||
var error = await _repository.SolicitudTransferencia.Update(docEntry, value.RetornaModelo());
|
||||
|
||||
var result = error ?? new BE_ResultadoTransaccion<object>
|
||||
{
|
||||
DocEntry = docEntry,
|
||||
StatusCode = 200,
|
||||
Message = "Registrado Correctamente",
|
||||
AppName = "SolicitudTransferenciaRepository",
|
||||
MethodName = "Update",
|
||||
Data = value,
|
||||
};
|
||||
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(result)), "SolicitudTraslado", value.NumOrden, docEntry.ToString(), result.DocNum, result.DocEntry?.ToString());
|
||||
|
||||
if (error != null)
|
||||
{
|
||||
return BadRequest(result);
|
||||
}
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[Route("{docEntry}/cerrar")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<IActionResult> Cerrar(int docEntry)
|
||||
{
|
||||
var error = await _repository.SolicitudTransferencia.Cerrar(docEntry);
|
||||
|
||||
var result = error ?? new BE_ResultadoTransaccion<object>
|
||||
{
|
||||
DocEntry = docEntry,
|
||||
StatusCode = 200,
|
||||
Message = "Cerrado Correctamente",
|
||||
AppName = "SolicitudTransferenciaRepository",
|
||||
MethodName = "Cerrar",
|
||||
};
|
||||
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new { docEntry })), Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(result)), "SolicitudTraslado", "0", docEntry.ToString(), result.DocNum, result.DocEntry?.ToString());
|
||||
|
||||
if (error != null)
|
||||
{
|
||||
return BadRequest(result);
|
||||
}
|
||||
return Ok(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Net.Business.DTO.WMS.Transferencia;
|
||||
using Net.Business.Services.Log;
|
||||
using Net.Data;
|
||||
using Newtonsoft.Json;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Net.Business.Services.Controllers
|
||||
{
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ApiExplorerSettings(GroupName = "ApiSAPWMS")]
|
||||
[Authorize(AuthenticationSchemes = "Bearer")]
|
||||
public class TransferenciaController : ControllerBase
|
||||
{
|
||||
private readonly IRepositoryWrapper _repository;
|
||||
public TransferenciaController(IRepositoryWrapper repository)
|
||||
{
|
||||
this._repository = repository;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[ProducesResponseType(StatusCodes.Status201Created)]
|
||||
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
||||
public async Task<IActionResult> POST([FromBody] Dto_TransferenciaRequest value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes("Master object is null"), "Transferencia", value.NumOrden, value.DocEntry.ToString(), "0", "0");
|
||||
return BadRequest("Master object is null");
|
||||
}
|
||||
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes("Invalid model object"), "Transferencia", value.NumOrden, value.DocEntry.ToString(), "0", "0");
|
||||
return BadRequest("Invalid model object");
|
||||
}
|
||||
|
||||
var ObjectNew = await _repository.Transferencia.Create(value.RetornaModelo());
|
||||
|
||||
if (ObjectNew.StatusCode != 200)
|
||||
{
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ObjectNew)), "Transferencia", value.NumOrden, value.DocEntry.ToString(), "0", "0");
|
||||
return BadRequest(ObjectNew);
|
||||
}
|
||||
B_Log.Add("Cubico", Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)), Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ObjectNew)), "Transferencia", value.NumOrden, value.DocEntry.ToString(), ObjectNew?.DocNum.ToString(), ObjectNew?.DocEntry.ToString());
|
||||
return Ok(ObjectNew);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Diagnostics;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Newtonsoft.Json;
|
||||
using System.Net;
|
||||
|
||||
namespace Net.Business.Services
|
||||
{
|
||||
public static class ExceptionMiddlewareExtensions
|
||||
{
|
||||
public static void ConfigureExceptionHandler(this IApplicationBuilder app)
|
||||
{
|
||||
app.UseExceptionHandler(appError =>
|
||||
{
|
||||
appError.Run(async context =>
|
||||
{
|
||||
context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
|
||||
context.Response.ContentType = "application/json";
|
||||
|
||||
var contextFeature = context.Features.Get<IExceptionHandlerFeature>();
|
||||
if (contextFeature != null)
|
||||
{
|
||||
|
||||
await context.Response.WriteAsync(new DtoErrorDetails()
|
||||
{
|
||||
StatusCode = context.Response.StatusCode,
|
||||
ErrorMessage = contextFeature.Error.Message.ToString()
|
||||
}.ToString());
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class DtoErrorDetails
|
||||
{
|
||||
public int StatusCode { get; set; }
|
||||
public string ErrorMessage { get; set; }
|
||||
public override string ToString()
|
||||
{
|
||||
return JsonConvert.SerializeObject(this);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Net.Connection;
|
||||
using Net.Data;
|
||||
using System.Net.Http;
|
||||
|
||||
namespace Net.Business.Services
|
||||
{
|
||||
public static class ServiceExtensions
|
||||
{
|
||||
|
||||
public static void ConfigureCors(this IServiceCollection services)
|
||||
{
|
||||
services.AddCors(opt =>
|
||||
{
|
||||
opt.AddPolicy("CorsPolicy",
|
||||
builder => builder.WithOrigins("http://192.168.1.4", "http://localhost:4200")
|
||||
.AllowAnyHeader()
|
||||
.WithMethods("GET", "POST", "PUT", "PATH")
|
||||
.AllowCredentials());
|
||||
});
|
||||
}
|
||||
|
||||
public static void ConfigureIISIntegration(this IServiceCollection services)
|
||||
{
|
||||
services.Configure<IISOptions>(options =>
|
||||
{
|
||||
});
|
||||
}
|
||||
|
||||
public static void ConfigureSQLConnection(this IServiceCollection services)
|
||||
{
|
||||
services.AddScoped<IConnectionSQL, ConnectionSQL>();
|
||||
}
|
||||
|
||||
public static void ConfigureRepositoryWrapper(this IServiceCollection services)
|
||||
{
|
||||
services.AddScoped<IRepositoryWrapper, RepositoryWrapper>();
|
||||
}
|
||||
|
||||
public static void ConfigureHttpClientServiceLayer(this IServiceCollection services)
|
||||
{
|
||||
services.AddHttpClient("bypass-ssl-validation")
|
||||
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
|
||||
{
|
||||
ServerCertificateCustomValidationCallback = (
|
||||
httpRequestMessage, cert, certChain, policyErrors) =>
|
||||
{
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>ITCA_API_SAP_WMS</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="M:Net.Business.Services.Controllers.AuthenticateController.Token(Net.Business.DTO.Authenticate.Dto_AuthenticateRequest)">
|
||||
<summary>
|
||||
Obtiene Token de Acceso
|
||||
</summary>
|
||||
<param name="value">Parametros de filtros</param>
|
||||
<returns>Devuelve Token de Acceso</returns>
|
||||
</member>
|
||||
<member name="M:Net.Business.Services.Controllers.InventarioController.Inventario(Net.Business.DTO.WMS.Inventario.Dto_Inventario)">
|
||||
<summary>
|
||||
Registra Proceso de Inventario
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
@@ -0,0 +1,35 @@
|
||||
using Sap.Data.Hana;
|
||||
using System;
|
||||
|
||||
namespace Net.Business.Services.Log
|
||||
{
|
||||
public class B_Log
|
||||
{
|
||||
public static string Add(string Origen, byte[] Trama_Origen, byte[] Trama_Respuesta, string Proceso, string Nro_Orden, string DocEntry, string DocNumSAP, string DocEntrySAP)
|
||||
{
|
||||
string DB = "ITCA_LOG_INTEGRACION";
|
||||
string Code = System.Guid.NewGuid().ToString();
|
||||
string Fecha = DateTime.Now.ToString("yyyy-MM-dd");
|
||||
HanaConnection hana = new HanaConnection(Net.Data.LocalData.ConnectionString);
|
||||
hana.Open();
|
||||
HanaCommand hanaCommand = hana.CreateCommand();
|
||||
hanaCommand.CommandText = $"INSERT INTO \"ITC_WMS_SAP\".\"{DB}\" (\"CODIGO\", \"ORIGEN\", \"TRAMA_ORIGEN\" , \"TRAMA_RESPUESTA\", \"PROCESO\", \"FECHA\", \"NRO_ORDEN\", \"DOCENTRY\", \"DOCNUMSAP\", \"DOCENTRYSAP\", \"HORA\") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
hanaCommand.Parameters.Add("CODIGO", HanaDbType.VarChar).Value = Code;
|
||||
hanaCommand.Parameters.Add("ORIGEN", HanaDbType.VarChar).Value = Origen;
|
||||
hanaCommand.Parameters.Add("TRAMA_ORIGEN", HanaDbType.Blob).Value = Trama_Origen;
|
||||
hanaCommand.Parameters.Add("TRAMA_RESPUESTA", HanaDbType.Blob).Value = Trama_Respuesta;
|
||||
hanaCommand.Parameters.Add("PROCESO", HanaDbType.VarChar).Value = Proceso;
|
||||
hanaCommand.Parameters.Add("FECHA", HanaDbType.Date).Value = Fecha;
|
||||
hanaCommand.Parameters.Add("NRO_ORDEN", HanaDbType.VarChar).Value = Nro_Orden;
|
||||
hanaCommand.Parameters.Add("DOCENTRY", HanaDbType.VarChar).Value = DocEntry;
|
||||
hanaCommand.Parameters.Add("DOCNUMSAP", HanaDbType.VarChar).Value = DocNumSAP;
|
||||
hanaCommand.Parameters.Add("DOCENTRYSAP", HanaDbType.VarChar).Value = DocEntrySAP;
|
||||
hanaCommand.Parameters.Add("HORA", HanaDbType.VarChar).Value = DateTime.Now.ToString("HH:mm:ss");
|
||||
hanaCommand.CommandType = System.Data.CommandType.Text;
|
||||
hanaCommand.ExecuteNonQuery();
|
||||
hana.Close();
|
||||
|
||||
return Code;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
<AssemblyName>ITCA_API_SAP_WMS</AssemblyName>
|
||||
<UserSecretsId>24763424-3300-4c85-87e3-503f8fdebd14</UserSecretsId>
|
||||
<!-- Antes solo estaba condicionado a Debug|AnyCPU - un "dotnet publish -c Release"
|
||||
(lo normal para IIS) se quedaba sin este archivo, y Startup.cs revienta con
|
||||
FileNotFoundException al armar Swagger (IncludeXmlComments) si no existe. -->
|
||||
<NoWarn>1701;1702;1591</NoWarn>
|
||||
<DocumentationFile>ITCA_API_SAP_WMS.xml</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.8" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.4" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Net.Business.DTO\Net.Business.DTO.csproj" />
|
||||
<ProjectReference Include="..\Net.Connection\Net.Connection.csproj" />
|
||||
<ProjectReference Include="..\Net.Data\Net.Data.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="resources\img\" />
|
||||
<Folder Include="resources\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="Sap.Data.Hana.Core.v2.1">
|
||||
<HintPath>..\..\..\..\..\..\..\..\Program Files\sap\hdbclient\dotnetcore\v2.1\Sap.Data.Hana.Core.v2.1.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
|
||||
<ProjectExtensions><VisualStudio><UserProperties appsettings_1json__JsonSchema="" /></VisualStudio></ProjectExtensions>
|
||||
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,47 @@
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Net.Business.Services
|
||||
{
|
||||
public class Program
|
||||
{
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
CreateHostBuilder(args).Build().Run();
|
||||
}
|
||||
|
||||
public static IHostBuilder CreateHostBuilder(string[] args) =>
|
||||
Host.CreateDefaultBuilder(args)
|
||||
.ConfigureWebHostDefaults(webBuilder =>
|
||||
{
|
||||
webBuilder.UseStartup<Startup>();
|
||||
});
|
||||
|
||||
//public static IHostBuilder CreateHostBuilder(string[] args) =>
|
||||
// Host.CreateDefaultBuilder(args)
|
||||
// .ConfigureWebHostDefaults(webBuilder =>
|
||||
// {
|
||||
// webBuilder.
|
||||
// UseStartup<Startup>()
|
||||
// .UseContentRoot(Directory.GetCurrentDirectory())
|
||||
// .UseKestrel(options =>
|
||||
// {
|
||||
// options.Limits.MaxRequestBodySize = long.MaxValue;
|
||||
// })
|
||||
// .UseIISIntegration();
|
||||
// //.UseKestrel(options =>
|
||||
// //{
|
||||
// // options.Limits.MaxRequestBodySize = long.MaxValue;
|
||||
// //})
|
||||
|
||||
// });
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||
-->
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<DeleteExistingFiles>false</DeleteExistingFiles>
|
||||
<ExcludeApp_Data>false</ExcludeApp_Data>
|
||||
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
|
||||
<LastUsedBuildConfiguration>Debug</LastUsedBuildConfiguration>
|
||||
<LastUsedPlatform>Any CPU</LastUsedPlatform>
|
||||
<PublishProvider>FileSystem</PublishProvider>
|
||||
<PublishUrl>bin\Debug\netcoreapp3.1\publish\</PublishUrl>
|
||||
<WebPublishMethod>FileSystem</WebPublishMethod>
|
||||
<_TargetId>Folder</_TargetId>
|
||||
<SiteUrlToLaunchAfterPublish />
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
<ProjectGuid>b4be6148-6e1f-4bb9-b399-424c4e6bf4c0</ProjectGuid>
|
||||
<SelfContained>false</SelfContained>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||
-->
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<DeleteExistingFiles>true</DeleteExistingFiles>
|
||||
<ExcludeApp_Data>false</ExcludeApp_Data>
|
||||
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
|
||||
<LastUsedBuildConfiguration>Debug</LastUsedBuildConfiguration>
|
||||
<LastUsedPlatform>Any CPU</LastUsedPlatform>
|
||||
<PublishProvider>FileSystem</PublishProvider>
|
||||
<PublishUrl>bin\Debug\netcoreapp3.1\publish\</PublishUrl>
|
||||
<WebPublishMethod>FileSystem</WebPublishMethod>
|
||||
<_TargetId>Folder</_TargetId>
|
||||
<SiteUrlToLaunchAfterPublish />
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
<ProjectGuid>b4be6148-6e1f-4bb9-b399-424c4e6bf4c0</ProjectGuid>
|
||||
<SelfContained>false</SelfContained>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||
-->
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<DeleteExistingFiles>true</DeleteExistingFiles>
|
||||
<ExcludeApp_Data>false</ExcludeApp_Data>
|
||||
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
|
||||
<LastUsedBuildConfiguration>Debug</LastUsedBuildConfiguration>
|
||||
<LastUsedPlatform>Any CPU</LastUsedPlatform>
|
||||
<PublishProvider>FileSystem</PublishProvider>
|
||||
<PublishUrl>bin\Debug\netcoreapp3.1\publish\</PublishUrl>
|
||||
<WebPublishMethod>FileSystem</WebPublishMethod>
|
||||
<_TargetId>Folder</_TargetId>
|
||||
<SiteUrlToLaunchAfterPublish />
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
<ProjectGuid>b4be6148-6e1f-4bb9-b399-424c4e6bf4c0</ProjectGuid>
|
||||
<SelfContained>false</SelfContained>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"profiles": {
|
||||
"IIS Express": {
|
||||
"commandName": "IISExpress",
|
||||
"launchBrowser": true,
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
},
|
||||
"Net.Business.Services": {
|
||||
"commandName": "Project",
|
||||
"launchBrowser": true,
|
||||
"launchUrl": "weatherforecast",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
},
|
||||
"applicationUrl": "https://localhost:5001;http://localhost:5000"
|
||||
},
|
||||
"IIS Desarrollo": {
|
||||
"commandName": "IIS",
|
||||
"workingDirectory": "C:\\inetpub\\wwwroot\\integracion",
|
||||
"launchUrl": "http://localhost/integracion"
|
||||
}
|
||||
},
|
||||
"$schema": "http://json.schemastore.org/launchsettings.json",
|
||||
"iisSettings": {
|
||||
"windowsAuthentication": false,
|
||||
"anonymousAuthentication": true,
|
||||
"iis": {
|
||||
"applicationUrl": "http://localhost/integracion",
|
||||
"sslPort": 0
|
||||
},
|
||||
"iisExpress": {
|
||||
"applicationUrl": "http://localhost:54791",
|
||||
"sslPort": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
|
||||
namespace Net.Business.Services
|
||||
{
|
||||
public class Startup
|
||||
{
|
||||
public Startup(IConfiguration configuration)
|
||||
{
|
||||
Configuration = configuration;
|
||||
Net.Data.LocalData.Configure(configuration);
|
||||
}
|
||||
|
||||
public IConfiguration Configuration { get; }
|
||||
|
||||
// This method gets called by the runtime. Use this method to add services to the container.
|
||||
public void ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
services.ConfigureCors();
|
||||
services.ConfigureIISIntegration();
|
||||
services.ConfigureSQLConnection();
|
||||
services.ConfigureHttpClientServiceLayer();
|
||||
|
||||
/*Linea con el cual obtenemos datos de la cabecera*/
|
||||
services.AddSingleton<Microsoft.AspNetCore.Http.IHttpContextAccessor, Microsoft.AspNetCore.Http.HttpContextAccessor>();
|
||||
|
||||
//Autenticacion
|
||||
string semilla = Configuration.GetSection("ParametrosTokenConfig").GetValue<string>("Semilla");
|
||||
string emisor = Configuration.GetSection("ParametrosTokenConfig").GetValue<string>("Emisor");
|
||||
string destinatario = Configuration.GetSection("ParametrosTokenConfig").GetValue<string>("Destinatario");
|
||||
|
||||
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(semilla));
|
||||
|
||||
services.AddAuthentication
|
||||
(JwtBearerDefaults.AuthenticationScheme)
|
||||
.AddJwtBearer(opt => {
|
||||
opt.TokenValidationParameters = new TokenValidationParameters
|
||||
{
|
||||
ValidateIssuer = true,
|
||||
ValidateAudience = true,
|
||||
ValidateLifetime = true,
|
||||
ValidIssuer = emisor,
|
||||
ValidAudience = destinatario,
|
||||
IssuerSigningKey = key
|
||||
};
|
||||
|
||||
});
|
||||
services.ConfigureRepositoryWrapper();
|
||||
|
||||
/*De aqui en adelante configuracion de documentacion de nuestra API*/
|
||||
services.AddSwaggerGen(options => {
|
||||
options.SwaggerDoc("ApiSAPWMS", new Microsoft.OpenApi.Models.OpenApiInfo()
|
||||
{
|
||||
Title = "API SAP - WMS",
|
||||
Version = "1",
|
||||
Description = "API Integración SAP / WMS",
|
||||
Contact = new Microsoft.OpenApi.Models.OpenApiContact()
|
||||
{
|
||||
Name = "IT Consultores Asociados",
|
||||
},
|
||||
License = new Microsoft.OpenApi.Models.OpenApiLicense()
|
||||
{
|
||||
Name = "MIT License",
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
var archivoXmlComentarios = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
|
||||
var rutaApiComentarios = Path.Combine(AppContext.BaseDirectory, archivoXmlComentarios);
|
||||
|
||||
options.IncludeXmlComments(rutaApiComentarios);
|
||||
|
||||
/*Primero definir el esquema de seguridad*/
|
||||
options.AddSecurityDefinition("Bearer", new Microsoft.OpenApi.Models.OpenApiSecurityScheme
|
||||
{
|
||||
Description = "Autenticacion JWT (Bearer)",
|
||||
Type = Microsoft.OpenApi.Models.SecuritySchemeType.Http,
|
||||
Scheme = "bearer"
|
||||
});
|
||||
|
||||
options.AddSecurityRequirement(new Microsoft.OpenApi.Models.OpenApiSecurityRequirement {
|
||||
{
|
||||
new Microsoft.OpenApi.Models.OpenApiSecurityScheme
|
||||
{
|
||||
Reference = new Microsoft.OpenApi.Models.OpenApiReference
|
||||
{
|
||||
Id = "Bearer",
|
||||
Type = Microsoft.OpenApi.Models.ReferenceType.SecurityScheme
|
||||
}
|
||||
}, new List<string>()
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
services.AddControllers();
|
||||
}
|
||||
|
||||
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
||||
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
|
||||
{
|
||||
if (env.IsDevelopment())
|
||||
{
|
||||
app.UseDeveloperExceptionPage();
|
||||
}
|
||||
|
||||
app.UseHttpsRedirection();
|
||||
|
||||
app.ConfigureExceptionHandler();
|
||||
|
||||
//Linea para documentacion api
|
||||
app.UseSwagger();
|
||||
|
||||
app.UseSwaggerUI(options =>
|
||||
{
|
||||
options.SwaggerEndpoint("swagger/ApiSAPWMS/swagger.json", "API SAP - WMS");
|
||||
options.RoutePrefix = "";
|
||||
});
|
||||
|
||||
app.UseRouting();
|
||||
|
||||
app.UseCors("CorsPolicy");
|
||||
app.UseAuthentication();
|
||||
app.UseAuthorization();
|
||||
|
||||
app.UseEndpoints(endpoints =>
|
||||
{
|
||||
endpoints.MapControllers();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "",
|
||||
"Microsoft": "",
|
||||
"Microsoft.Hosting.Lifetime": ""
|
||||
}
|
||||
},
|
||||
"AllowedHosts": "",
|
||||
"ConnectionStrings": {
|
||||
"cnnSql": ""
|
||||
},
|
||||
"EntornoConection": {
|
||||
"Entorno": "",
|
||||
"EntornoSAP": ""
|
||||
},
|
||||
"ParametersConectionDev": {
|
||||
"Source": "",
|
||||
"Catalog": "",
|
||||
"User": "",
|
||||
"Password": ""
|
||||
},
|
||||
"ParametersConectionProd": {
|
||||
"Source": "",
|
||||
"Catalog": "",
|
||||
"User": "",
|
||||
"Password": ""
|
||||
},
|
||||
"ParametrosTokenConfig": {
|
||||
"Semilla": "",
|
||||
"Emisor": "",
|
||||
"Destinatario": ""
|
||||
},
|
||||
"SapServiceLayer": {
|
||||
"url": "",
|
||||
"company": "",
|
||||
"user": "",
|
||||
"password": ""
|
||||
},
|
||||
"Hana": {
|
||||
"server": "",
|
||||
"user": "",
|
||||
"password": ""
|
||||
},
|
||||
"EmailSenderOptions": {
|
||||
"Port": "",
|
||||
"Password": "",
|
||||
"EnableSsl": "",
|
||||
"Email": "",
|
||||
"Host": ""
|
||||
},
|
||||
"RutaAnexo": {
|
||||
"UbicacionAdjunto": ""
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 7.0 KiB |
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<location path="." inheritInChildApplications="false">
|
||||
<system.webServer>
|
||||
<security>
|
||||
<requestFiltering>
|
||||
<requestLimits maxAllowedContentLength="2147483648" />
|
||||
</requestFiltering>
|
||||
</security>
|
||||
<handlers>
|
||||
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
|
||||
</handlers>
|
||||
<aspNetCore processPath="bin\Debug\netcoreapp3.1\ITCA_API_SAP_WMS.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
|
||||
</system.webServer>
|
||||
</location>
|
||||
</configuration>
|
||||
<!--ProjectGuid: b4be6148-6e1f-4bb9-b399-424c4e6bf4c0-->
|
||||
@@ -0,0 +1,11 @@
|
||||
namespace Net.Connection.Attributes
|
||||
{
|
||||
public enum ActionType
|
||||
{
|
||||
Everything,
|
||||
View,
|
||||
Insert,
|
||||
Update,
|
||||
Delete
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
|
||||
namespace Net.Connection.Attributes
|
||||
{
|
||||
public class DBParameter : Attribute
|
||||
{
|
||||
public string name { get; set; }
|
||||
public int size { get; set; }
|
||||
public SqlDbType dbType { get; set; }
|
||||
public ParameterDirection direction { get; set; }
|
||||
public ActionType actionType;
|
||||
|
||||
public Boolean Key { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Asignacion del Tipo de Dato
|
||||
/// </summary>
|
||||
/// <param name="dbType">Tipo de dato</param>
|
||||
/// <param name="actionType">Accion a realizar Everything, View, Insert, Update, Delete</param>
|
||||
/// <param name="Key">Primary Key</param>
|
||||
public DBParameter(SqlDbType dbType, ActionType actionType, Boolean Key)
|
||||
{
|
||||
DBParameterMethod(dbType, 0, ParameterDirection.Input, "", actionType, Key);
|
||||
}
|
||||
//public DBParameter(SqlDbType dbType, ActionType actionType)
|
||||
//{
|
||||
// DBParameterMethod(dbType, 0, ParameterDirection.Input, "", actionType, false);
|
||||
//}
|
||||
//public DBParameter(SqlDbType dbType, ActionType actionType, ParameterDirection direction)
|
||||
//{
|
||||
// DBParameterMethod(dbType, 0, direction, "", actionType, false);
|
||||
//}
|
||||
|
||||
/// <summary>
|
||||
/// Asignacion del Tipo de Dato
|
||||
/// </summary>
|
||||
/// <param name="dbType">Tipo de Dato</param>
|
||||
/// <param name="size">Tamano</param>
|
||||
/// <param name="actionType">Accion a realizar Everything, View, Insert, Update, Delete</param>
|
||||
public DBParameter(SqlDbType dbType, int size, ActionType actionType)
|
||||
{
|
||||
DBParameterMethod(dbType, size, ParameterDirection.Input, "", actionType, false);
|
||||
}
|
||||
//public DBParameter(SqlDbType dbType, int size, ParameterDirection direction, ActionType actionType)
|
||||
//{
|
||||
// DBParameterMethod(dbType, size, direction, "", actionType, false);
|
||||
//}
|
||||
//public DBParameter(SqlDbType dbType, int size, ParameterDirection direction, string name, ActionType actionType)
|
||||
//{
|
||||
// DBParameterMethod(dbType, size, direction, name, actionType, false);
|
||||
//}
|
||||
|
||||
private void DBParameterMethod(SqlDbType dbType, int size, ParameterDirection direction, string name, ActionType actionType, Boolean Key)
|
||||
{
|
||||
this.dbType = dbType;
|
||||
this.direction = direction;
|
||||
this.size = size;
|
||||
this.name = name;
|
||||
this.actionType = actionType;
|
||||
this.Key = Key;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,17 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="5.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Http" Version="5.0.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Net.Business.Entities\Net.Business.Entities.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,9 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Net.Connection.ServiceLayer
|
||||
{
|
||||
public class ResponseGetServiceLayer<T>
|
||||
{
|
||||
public List<T> value { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
using System;
|
||||
|
||||
namespace Net.Connection.ServiceLayer
|
||||
{
|
||||
public class ResponseLoginServiceLayer
|
||||
{
|
||||
public string SessionId { get; set; }
|
||||
public string Version { get; set; }
|
||||
public int? SessionTimeout { get; set; }
|
||||
public Boolean ServicioActivo { get; set; }
|
||||
public string MensajeLogin { get; set; }
|
||||
public ErrorServiceLayer error { get; set; }
|
||||
}
|
||||
|
||||
public class ErrorServiceLayer
|
||||
{
|
||||
public string code { get; set; }
|
||||
public object message { get; set; }
|
||||
//public string? message { get; set; }
|
||||
}
|
||||
|
||||
public class ErrorMensajeServiceLayer
|
||||
{
|
||||
public string lang { get; set; }
|
||||
public string value { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,372 @@
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Data.SqlClient;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Net.Connection.Attributes;
|
||||
using Net.CrossCotting;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Net.Connection
|
||||
{
|
||||
public class ConnectionSQL : IConnectionSQL
|
||||
{
|
||||
public string _cnx { get; set; }
|
||||
|
||||
public ConnectionSQL(IConfiguration configuration, IServiceProvider serviceProvider)
|
||||
{
|
||||
}
|
||||
|
||||
public ConnectionSQL()
|
||||
{
|
||||
}
|
||||
public string DevuelveConnectionSQL()
|
||||
{
|
||||
return _cnx;
|
||||
}
|
||||
|
||||
public IEnumerable<T> ExecuteSqlViewFindByCondition<T>(string procedureName, object parameters)
|
||||
{
|
||||
return ExecuteSqlQuery<T>(procedureName, GetParametersSqlQueryAnotation(parameters, ActionType.View).ToArray());
|
||||
}
|
||||
|
||||
public T ExecuteSqlViewId<T>(string procedureName, object parameters)
|
||||
{
|
||||
return ExecuteSqlQuery<T>(procedureName, GetParametersSqlQueryAnotation(parameters, ActionType.Everything).ToArray()).FirstOrDefault();
|
||||
}
|
||||
|
||||
public IEnumerable<T> ExecuteSqlViewAll<T>(string procedureName, T parameters)
|
||||
{
|
||||
return ExecuteSqlQuery<T>(procedureName, GetParametersSqlQueryAnotation(parameters, ActionType.Everything).ToArray());
|
||||
}
|
||||
|
||||
public object ExecuteSqlInsert<T>(string procedureName, object parameters)
|
||||
{
|
||||
return ExecuteSqlNonQuery(procedureName, GetParametersSqlQueryAnotation(parameters, ActionType.Insert).ToArray())[0].valor;
|
||||
}
|
||||
public object ExecuteSqlUpdate<T>(string procedureName, object parameters)
|
||||
{
|
||||
return ExecuteSqlNonQuery(procedureName, GetParametersSqlQueryAnotation(parameters, ActionType.Update).ToArray());
|
||||
}
|
||||
|
||||
public object ExecuteSqlDelete<T>(string procedureName, T parameters)
|
||||
{
|
||||
return ExecuteSqlNonQuery(procedureName, GetParametersSqlQueryAnotation(parameters, ActionType.Delete).ToArray());
|
||||
}
|
||||
|
||||
public DbParametro[] ExecuteSqlNonQuery(string procedureName, DbParametro[] parameters)
|
||||
{
|
||||
SqlConnection cnx = new SqlConnection(_cnx);
|
||||
SqlCommand cmd = cnx.CreateCommand();
|
||||
cmd.CommandType = CommandType.StoredProcedure;
|
||||
cmd.CommandText = procedureName;
|
||||
cmd.CommandTimeout = 0;
|
||||
try
|
||||
{
|
||||
foreach (DbParametro parametro in parameters)
|
||||
{
|
||||
SqlParameter prm = new SqlParameter();
|
||||
prm.ParameterName = parametro.nombre;
|
||||
if (!parametro.dbType.Equals (System.Data.SqlDbType.VarBinary))
|
||||
{
|
||||
prm.SqlDbType = parametro.dbType;
|
||||
prm.Size = (parametro.size == 0) ? prm.Size : parametro.size;
|
||||
}
|
||||
|
||||
prm.Direction = parametro.direccion;
|
||||
prm.Value = parametro.valor;
|
||||
cmd.Parameters.Add(prm);
|
||||
}
|
||||
|
||||
if (cmd.Connection.State.HasFlag(ConnectionState.Closed))
|
||||
cmd.Connection.Open();
|
||||
|
||||
cmd.Transaction = cmd.Connection.BeginTransaction();
|
||||
cmd.ExecuteNonQuery();
|
||||
if (parameters != null)
|
||||
{
|
||||
SqlParameterCollection sqlParameters = cmd.Parameters;
|
||||
|
||||
for (int i = 0; i < parameters.Length; i++)
|
||||
{
|
||||
parameters[i].valor = sqlParameters[parameters[i].nombre.ToUpper().Trim()].Value;
|
||||
}
|
||||
}
|
||||
cmd.Transaction.Commit();
|
||||
}
|
||||
catch (SqlException ex)
|
||||
{
|
||||
if (cmd.Transaction != null)
|
||||
{
|
||||
cmd.Transaction.Rollback();
|
||||
}
|
||||
throw ex;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (cmd.Transaction != null)
|
||||
{
|
||||
cmd.Transaction.Rollback();
|
||||
}
|
||||
throw ex;
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (cmd.Connection != null && cmd.Connection.State == ConnectionState.Open)
|
||||
{
|
||||
cmd.Connection.Close();
|
||||
cmd.Connection.Dispose();
|
||||
cmd.Dispose();
|
||||
}
|
||||
}
|
||||
return parameters;
|
||||
}
|
||||
|
||||
public IEnumerable<T> ExecuteSqlQuery<T>(string comandSql)
|
||||
{
|
||||
return ExecuteSqlQuery<T>(comandSql, null);
|
||||
}
|
||||
|
||||
public IEnumerable<T> ExecuteSqlQuery<T>(string procedureName, DbParametro[] parameters)
|
||||
{
|
||||
IEnumerable<T> queryResult;
|
||||
SqlCommand cmd = new SqlCommand(procedureName);
|
||||
cmd.CommandText = procedureName;
|
||||
cmd.CommandType = CommandType.StoredProcedure;
|
||||
cmd.CommandTimeout = 0;
|
||||
try
|
||||
{
|
||||
// Asignamos los parámetros
|
||||
if (parameters != null)
|
||||
{
|
||||
foreach (DbParametro parametro in parameters)
|
||||
{
|
||||
SqlParameter prm = new SqlParameter();
|
||||
prm.ParameterName = parametro.nombre;
|
||||
prm.SqlDbType = parametro.dbType;
|
||||
prm.Size = parametro.size;
|
||||
prm.Direction = parametro.direccion;
|
||||
prm.Value = parametro.valor;
|
||||
cmd.Parameters.Add(prm);
|
||||
}
|
||||
}
|
||||
// Creamos la Conexion
|
||||
cmd.Connection = new SqlConnection(_cnx);
|
||||
if (cmd.Connection.State.HasFlag(ConnectionState.Closed))
|
||||
cmd.Connection.Open();
|
||||
|
||||
DataTable dataTable = new DataTable();
|
||||
cmd.Transaction = cmd.Connection.BeginTransaction();
|
||||
using (IDataReader reader = cmd.ExecuteReader())
|
||||
{
|
||||
dataTable.Load(reader);
|
||||
queryResult = ConvertTo<T>(dataTable);
|
||||
}
|
||||
cmd.Transaction.Commit();
|
||||
|
||||
}
|
||||
catch (SqlException ex)
|
||||
{
|
||||
if (cmd.Transaction != null)
|
||||
{
|
||||
cmd.Transaction.Rollback();
|
||||
}
|
||||
throw ex;
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (cmd.Connection != null && cmd.Connection.State == ConnectionState.Open)
|
||||
{
|
||||
cmd.Connection.Close();
|
||||
cmd.Connection.Dispose();
|
||||
cmd.Dispose();
|
||||
}
|
||||
}
|
||||
return queryResult;
|
||||
}
|
||||
|
||||
//private static SqlParameterCollection CreateParametros(string procedureName, string conexion)
|
||||
//{
|
||||
// SqlCommand cmd = new SqlCommand(procedureName.Trim());
|
||||
// try
|
||||
// {
|
||||
// cmd.CommandType = CommandType.StoredProcedure;
|
||||
// cmd.Connection = new SqlConnection(conexion);
|
||||
// if (cmd.Connection.State == ConnectionState.Closed)
|
||||
// {
|
||||
// cmd.Connection.Open();
|
||||
// }
|
||||
// SqlCommandBuilder.DeriveParameters(cmd);
|
||||
// for (int i = 0; i < cmd.Parameters.Count; i++)
|
||||
// {
|
||||
// string Nombre = cmd.Parameters[i].ParameterName;
|
||||
// if (Nombre.Substring(0, 1) == "@")
|
||||
// {
|
||||
// Nombre = Nombre.Substring(1);
|
||||
// }
|
||||
// cmd.Parameters[i].ParameterName = Nombre.ToUpper();
|
||||
// }
|
||||
// return cmd.Parameters;
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// throw ex;
|
||||
// }
|
||||
// finally
|
||||
// {
|
||||
// cmd.Connection.Dispose();
|
||||
// cmd.Dispose();
|
||||
// }
|
||||
//}
|
||||
|
||||
//private static IList<DbParametro> GetParametersSqlQuery(Object parameters)
|
||||
//{
|
||||
// IList<DbParametro> listaParametro = new List<DbParametro>();
|
||||
|
||||
// foreach (PropertyInfo prop in parameters.GetType().GetProperties())
|
||||
// {
|
||||
// dynamic valor = prop.GetValue(parameters, null);
|
||||
// Type type = Nullable.GetUnderlyingType(prop.PropertyType);
|
||||
|
||||
// if (valor != null)
|
||||
// {
|
||||
// type = (type == null) ? prop.PropertyType : type;
|
||||
|
||||
// if (type != typeof(System.Collections.Generic.ICollection<>))
|
||||
// {
|
||||
// listaParametro.Add(new DbParametro() { nombre = prop.Name, valor = valor });
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// return listaParametro;
|
||||
//}
|
||||
|
||||
private static IList<DbParametro> GetParametersSqlQueryAnotation<T>(T parameters, ActionType actionType)
|
||||
{
|
||||
IList<DbParametro> listaParametro = new List<DbParametro>();
|
||||
|
||||
foreach (PropertyInfo prop in parameters.GetType().GetProperties())
|
||||
{
|
||||
dynamic valor = prop.GetValue(parameters, null);
|
||||
Type type = Nullable.GetUnderlyingType(prop.PropertyType);
|
||||
|
||||
if (valor != null)
|
||||
{
|
||||
type = (type == null) ? prop.PropertyType : type;
|
||||
var attributes = prop.GetCustomAttributes(false);
|
||||
var columnMapping = attributes.FirstOrDefault(a => a.GetType() == typeof(DBParameter));
|
||||
if (columnMapping != null)
|
||||
{
|
||||
DbParametro parametro = new DbParametro() { valor = valor };
|
||||
var mapsto = columnMapping as DBParameter;
|
||||
|
||||
switch (actionType)
|
||||
{
|
||||
case ActionType.Insert:
|
||||
if (mapsto.actionType == ActionType.Everything)
|
||||
{
|
||||
mapsto.actionType = ActionType.Insert;
|
||||
}
|
||||
break;
|
||||
case ActionType.Update:
|
||||
if (mapsto.actionType == ActionType.Everything)
|
||||
{
|
||||
mapsto.actionType = ActionType.Update;
|
||||
}
|
||||
break;
|
||||
case ActionType.Delete:
|
||||
if (mapsto.actionType == ActionType.Everything)
|
||||
{
|
||||
mapsto.actionType = ActionType.Delete;
|
||||
}
|
||||
break;
|
||||
case ActionType.View:
|
||||
if (mapsto.actionType == ActionType.View ||
|
||||
mapsto.actionType == ActionType.Everything)
|
||||
{
|
||||
mapsto.actionType = ActionType.View;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (mapsto.actionType == actionType)
|
||||
{
|
||||
parametro.nombre = (mapsto.name == "") ? prop.Name : mapsto.name;
|
||||
parametro.direccion = (mapsto.Key == true && mapsto.actionType == ActionType.Insert) ? ParameterDirection.Output : mapsto.direction;
|
||||
parametro.dbType = mapsto.dbType;
|
||||
parametro.size = mapsto.size;
|
||||
listaParametro.Add(parametro);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return listaParametro;
|
||||
}
|
||||
|
||||
public static IList<T> ConvertTo<T>(DataTable table)
|
||||
{
|
||||
if (table == null)
|
||||
return null;
|
||||
|
||||
List<DataRow> rows = new List<DataRow>();
|
||||
foreach (DataRow row in table.Rows)
|
||||
rows.Add(row);
|
||||
|
||||
return ConvertTo<T>(rows);
|
||||
}
|
||||
|
||||
public static IList<T> ConvertTo<T>(IList<DataRow> rows)
|
||||
{
|
||||
IList<T> list = null;
|
||||
if (rows != null)
|
||||
{
|
||||
list = new List<T>();
|
||||
foreach (DataRow row in rows)
|
||||
{
|
||||
T item = CreateItem<T>(row);
|
||||
list.Add(item);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public static T CreateItem<T>(DataRow row)
|
||||
{
|
||||
string columnName;
|
||||
T obj = default(T);
|
||||
if (row != null)
|
||||
{
|
||||
obj = Activator.CreateInstance<T>();
|
||||
foreach (DataColumn column in row.Table.Columns)
|
||||
{
|
||||
columnName = column.ColumnName;
|
||||
//Get property with same columnName
|
||||
PropertyInfo prop = obj.GetType().GetProperty(columnName, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
|
||||
try
|
||||
{
|
||||
if (prop != null)
|
||||
{
|
||||
//Get value for the column
|
||||
object value = (row[columnName].GetType() == typeof(DBNull)) ? null : row[columnName];
|
||||
//Set property value
|
||||
prop.SetValue(obj, value, null);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
//Catch whatever here
|
||||
}
|
||||
}
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
using System.Data;
|
||||
|
||||
namespace Net.Connection
|
||||
{
|
||||
public class DbParametro
|
||||
{
|
||||
public string nombre { get; set; }
|
||||
public object valor { get; set; }
|
||||
|
||||
public int size { get; set; }
|
||||
public ParameterDirection direccion { get; set; }
|
||||
public SqlDbType dbType { get; set; }
|
||||
|
||||
public DbParametro()
|
||||
{
|
||||
nombre = "";
|
||||
valor = null;
|
||||
direccion = ParameterDirection.Input;
|
||||
}
|
||||
|
||||
public DbParametro(string Nombre, object Valor, ParameterDirection Direccion)
|
||||
{
|
||||
nombre = Nombre;
|
||||
valor = Valor;
|
||||
direccion = Direccion;
|
||||
}
|
||||
|
||||
public DbParametro(string Nombre, object Valor)
|
||||
{
|
||||
nombre = Nombre;
|
||||
valor = Valor;
|
||||
direccion = ParameterDirection.Input;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loaded 100 of 168 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user