3 using System.Collections.Generic;
23 protected override List<String> _Tables
27 return new List<string>() {
"C_SERVICIOS",
"D_SERVICIOS",
"SERV_MAT",
"SERSER",
"MULTICA2" };
31 protected override bool _Import(String tcTable, Dictionary<String, Object> toParams)
33 String lcCaseLetraServicios, lcSql =
"";
34 List<String> loSql =
new List<string>();
35 List<TraspasColumn> loColumns =
new List<TraspasColumn>();
36 List<TraspasColumn> loColumnsComunes =
new List<TraspasColumn>();
42 lcCaseLetraServicios = _GetCaseLetras(toParams,
"LETRA_SERV");
44 loColumns =
new List<TraspasColumn>();
45 loColumns.Add(
new TraspasColumn(
"'DTS-SERVICIO'",
"USUARIO"));
46 loColumns.Add(
new TraspasColumn(DB.SQLIif(
"EJERCICIO = 0 ",
"YEAR(CAST(FECHA_INI AS DATETIME))",
"EJERCICIO"),
"EJERCICIO"));
48 loColumns.Add(
new TraspasColumn(lcCaseLetraServicios,
"LETRA"));
52 loColumns.Add(
new TraspasColumn(String.Format(
"CAST(FECHA_INI AS DATETIME) + {0}", DB.SQLIif(
"ISDATE(HORA_INI) = 1",
"CAST(HORA_INI AS DATETIME)",
"CAST('00:00' AS DATETIME)")),
"FECHA"));
53 loColumns.Add(
new TraspasColumn(String.Format(
"CAST(FECHA_FIN AS DATETIME) + {0}", DB.SQLIif(
"ISDATE(HORA_FIN) = 1",
"CAST(HORA_FIN AS DATETIME)",
"CAST('00:00' AS DATETIME)")),
"FECH_OUT"));
54 loColumns.Add(
new TraspasColumn(String.Format(
"CAST(FECHA_FIN AS DATETIME) + {0}", DB.SQLIif(
"ISDATE(HORA_FIN) = 1",
"CAST(HORA_FIN AS DATETIME)",
"CAST('00:00' AS DATETIME)")),
"FECH_PREVI"));
56 loColumns.Add(
new TraspasColumn(
"ISNULL(SOLUCIO, '')",
"SOLUCION"));
57 loColumns.Add(
new TraspasColumn(
"ISNULL(OBSERVA, '')",
"OBSERVA"));
66 loColumns.Add(
new TraspasColumn(
"SERIE", _UsaSeries ?
"SERIE":
"ARTICULO"));
67 loColumns.Add(
new TraspasColumn(DB.SQLIif(
"ACABADO = 1",
"'03'",
"'01'"),
"ESTADOSERV"));
70 lcSql = String.Format(
"INSERT INTO {0} ({2}) SELECT {3} FROM {1};", DB.SQLDatabase(
"SERVICES", tcTable), DB.SQLDatabase(
"SERVEIS",
"SERVEIS"), String.Join(
",", loColumns.Select(f => f._ColumnNameDest)), String.Join(
",", loColumns.Select(f => f._ColumnNameOri)));
75 lcCaseLetraServicios = String.Format(
"{0} as LETRA", _GetCaseLetras(toParams,
"LETRA_SERV",
"a.EMPRESA"));
78 loColumnsComunes =
new List<TraspasColumn>();
79 loColumnsComunes.Add(
new TraspasColumn(
"a.EMPRESA",
"EMPRESA"));
80 loColumnsComunes.Add(
new TraspasColumn(
"a.CODIGO as NUMERO",
"NUMERO"));
81 loColumnsComunes.Add(
new TraspasColumn( lcCaseLetraServicios,
"LETRA"));
82 loColumnsComunes.Add(
new TraspasColumn(String.Format(
"{0} as EJERCICIO", DB.SQLIif(
" a.EJERCICIO = 0 ",
"YEAR(CAST(a.FECHA_INI AS DATETIME))",
"EJERCICIO")),
"EJERCICIO"));
83 loColumnsComunes.Add(
new TraspasColumn(
"b.TECNICO",
"TECNICO"));
84 loColumnsComunes.Add(
new TraspasColumn(
"ISNULL(b.FECHA, a.FECHA_INI) as FECHA ",
"FECHA"));
85 loColumnsComunes.Add(
new TraspasColumn(String.Format(
"{0} as HORA_INI", _TrataFecha(
"b.HORA_ENT")),
"HORA_INI"));
86 loColumnsComunes.Add(
new TraspasColumn(String.Format(
"{0} as HORA_FIN", _TrataFecha(
"b.HORA_SAL")),
"HORA_FIN"));
87 loColumnsComunes.Add(
new TraspasColumn(String.Format(
"{0} as TIEMPO", String.Format(
"DATEPART(hour, (CAST({0} AS DATETIME) - CAST({1} AS DATETIME))) + ", _TrataFecha(
"b.HORA_SAL"), _TrataFecha(
"b.HORA_ENT")) + DB.SQLIif(String.Format(
"DATEPART(MINUTE, (CAST({0} AS DATETIME) - CAST({1} AS DATETIME))) > 0 ", _TrataFecha(
"b.HORA_SAL"), _TrataFecha(
"b.HORA_ENT")), String.Format(
"(DATEPART(MINUTE, (CAST({0} AS DATETIME) - CAST({1} AS DATETIME))))/60", _TrataFecha(
"b.HORA_SAL"), _TrataFecha(
"b.HORA_ENT")),
"0")),
"TIEMPO"));
88 loColumnsComunes.Add(
new TraspasColumn(
"ISNULL(t.CODIGO, '') as TIPOGASTO",
"TIPOGASTO"));
89 loColumnsComunes.Add(
new TraspasColumn(
"1 as FACTURABLE",
"FACTURABLE"));
90 loColumnsComunes.Add(
new TraspasColumn(String.Format(
"LTRIM(CONCAT({0} COLLATE Modern_Spanish_CS_AI,' ', ISNULL(CAST(b.SOLUCION as varchar),''))) as NOTAS", DB.SQLIif(
"ISDATE(b.HORA_ENT) = 1 AND ISDATE(b.HORA_SAL) = 1 AND REPLACE(b.HORA_ENT,' ', '0') = b.HORA_ENT AND REPLACE(b.HORA_SAL,' ', '0') = b.HORA_SAL ",
"''",
"'Detectado formato incorrecto en las horas de origen, hora inicio:' + b.HORA_ENT + ' hora fin:' + + b.HORA_SAL ")),
"NOTAS"));
92 loColumns =
new List<TraspasColumn>();
93 loColumns.AddRange(loColumnsComunes);
94 loColumns.Add(
new TraspasColumn(
"b.TIEMPO as UNIDADES",
"UNIDADES"));
95 loColumns.Add(
new TraspasColumn(
"b.PRECIO_HO as COSTE",
"COSTE"));
96 loColumns.Add(
new TraspasColumn(
"b.TIEMPO * b.PRECIO_HO as COSTETOTAL",
"COSTETOTAL"));
98 loSql.Add(String.Format(
" SELECT {0} FROM {1} a INNER JOIN {2} b ON a.EMPRESA = b.EMPRESA AND a.CODIGO = b.SERVICIO INNER JOIN {3} e ON e.EMPRESA = a.EMPRESA INNER JOIN {4} t ON t.ARTICULO = e.ART_HO WHERE b.TIEMPO <> 0 ", String.Join(
",", loColumns.Select(f => f._ColumnNameOri)), DB.SQLDatabase(
"SERVEIS",
"SERVEIS"), DB.SQLDatabase(
"SERVEIS",
"SERVCON"), DB.SQLDatabase(
"SERVEIS",
"CONFIGSE"), DB.SQLDatabase(
"SERVICES",
"TIPOGASTOS")));
101 loColumns =
new List<TraspasColumn>();
102 loColumns.AddRange(loColumnsComunes);
103 loColumns.Add(
new TraspasColumn(
"b.KM as UNIDADES",
"UNIDADES"));
104 loColumns.Add(
new TraspasColumn(
"b.PRECIO_KM as COSTE",
"COSTE"));
105 loColumns.Add(
new TraspasColumn(
"b.KM * b.PRECIO_KM as COSTETOTAL",
"COSTETOTAL"));
108 loSql.Add(String.Format(
" SELECT {0} FROM {1} a INNER JOIN {2} b ON a.EMPRESA = b.EMPRESA AND a.CODIGO = b.SERVICIO INNER JOIN {3} e ON e.EMPRESA = a.EMPRESA INNER JOIN {4} t ON t.ARTICULO = e.ART_KM WHERE b.KM <> 0", String.Join(
",", loColumns.Select(f => f._ColumnNameOri)), DB.SQLDatabase(
"SERVEIS",
"SERVEIS"), DB.SQLDatabase(
"SERVEIS",
"SERVCON"), DB.SQLDatabase(
"SERVEIS",
"CONFIGSE"), DB.SQLDatabase(
"SERVICES",
"TIPOGASTOS")));
112 loColumns =
new List<TraspasColumn>();
113 loColumns.AddRange(loColumnsComunes);
114 loColumns.Add(
new TraspasColumn(String.Format(
"{0} as UNIDADES", DB.SQLIif(
"b.DIETAS > 0",
"1",
"0")),
"UNIDADES"));
115 loColumns.Add(
new TraspasColumn(
"b.DIETAS as COSTE",
"COSTE"));
116 loColumns.Add(
new TraspasColumn(
"b.DIETAS as COSTETOTAL",
"COSTETOTAL"));
119 loSql.Add(String.Format(
" SELECT {0} FROM {1} a INNER JOIN {2} b ON a.EMPRESA = b.EMPRESA AND a.CODIGO = b.SERVICIO INNER JOIN {3} e ON e.EMPRESA = a.EMPRESA INNER JOIN {4} t ON t.ARTICULO = e.ART_DIETAS WHERE b.DIETAS <> 0 ", String.Join(
",", loColumns.Select(f => f._ColumnNameOri)), DB.SQLDatabase(
"SERVEIS",
"SERVEIS"), DB.SQLDatabase(
"SERVEIS",
"SERVCON"), DB.SQLDatabase(
"SERVEIS",
"CONFIGSE"), DB.SQLDatabase(
"SERVICES",
"TIPOGASTOS")));
121 lcSql = String.Join(Environment.NewLine, loSql);
122 lcSql = String.Format(
"INSERT INTO {0} (LINEA, {1}) SELECT ROW_NUMBER() OVER(PARTITION BY g.EMPRESA, g.NUMERO, g.LETRA, g.EJERCICIO ORDER BY g.EMPRESA, g.NUMERO, g.LETRA, g.EJERCICIO) as LINEA, {2} FROM ({3}) as g ", DB.SQLDatabase(
"SERVICES", tcTable), String.Join(
",", loColumns.Select(f => f._ColumnNameDest)), String.Join(
",", loColumns.Select(f => String.Format(
"g.{0}", f._ColumnNameDest))), lcSql);
128 lcCaseLetraServicios = String.Format(
"{0} as LETRA", _GetCaseLetras(toParams,
"LETRA_SERV",
"a.EMPRESA"));
130 loColumns =
new List<TraspasColumn>();
132 loColumns.Add(
new TraspasColumn(
"a.CODIGO as NUMERO",
"NUMERO"));
133 loColumns.Add(
new TraspasColumn(lcCaseLetraServicios,
"LETRA"));
134 loColumns.Add(
new TraspasColumn(String.Format(
"{0} as EJERCICIO", DB.SQLIif(
" a.EJERCICIO = 0 ",
"YEAR(CAST(a.FECHA_INI AS DATETIME))",
"EJERCICIO")),
"EJERCICIO"));
136 loColumns.Add(
new TraspasColumn(
"ISNULL(m.FECHA, m.APLICADA)",
"FECHA"));
141 loColumns.Add(
new TraspasColumn(
"UNIDADES * (m.PRECIO * (1 - m.DTO/100))",
"IMPORTE"));
142 loColumns.Add(
new TraspasColumn(
"ISNULL(art.NOMBRE, '')",
"NOMBRE"));
144 lcSql = String.Format(
"SELECT {1} FROM {0} a ", DB.SQLDatabase(
"SERVEIS",
"SERVEIS"), String.Join(
",", loColumns.Select(f => f._ColumnNameOri)));
145 lcSql += String.Format(
"INNER JOIN {0} m ON a.EMPRESA = m.EMPRESA AND a.CODIGO = m.SERVEI ", DB.SQLDatabase(
"SERVEIS",
"MATERSER"));
146 lcSql += String.Format(
"LEFT JOIN {0} art ON art.CODIGO = m.ARTICULO ", DB.SQLDatabase(
"GESTION",
"ARTICULO"));
148 lcSql = String.Format(
"INSERT INTO {0} ({1}) {2}", DB.SQLDatabase(
"SERVICES", tcTable), String.Join(
",", loColumns.Select(f => f._ColumnNameDest)), lcSql);
154 lcCaseLetraServicios = _GetCaseLetras(toParams,
"LETRA_SERV",
"m.EMPRESA");
156 loColumns =
new List<TraspasColumn>();
160 loColumns.Add(
new TraspasColumn(
"s.CODIGO as NUMERO",
"ALBARAN"));
161 loColumns.Add(
new TraspasColumn(lcCaseLetraServicios,
"LETRA"));
165 lcSql = String.Format(
"SELECT {0} FROM {1} m {2}", String.Join(
",", loColumns.Select(f => f._ColumnNameOri)), DB.SQLDatabase(
"SERVEIS",
"MATERSER"), Environment.NewLine);
166 lcSql += String.Format(
" INNER JOIN {0} s ON m.EMPRESA = s.EMPRESA AND m.SERVEI = s.CODIGO WHERE SUBSTRING(m.SERIE, 1, 2) <> 'C-' ", DB.SQLDatabase(
"SERVEIS",
"SERVEIS"));
168 lcSql = String.Format(
"INSERT INTO {0} ({2}) {1} ", DB.SQLDatabase(
"SERVICES", tcTable), lcSql, String.Join(
",", loColumns.Select(f => f._ColumnNameDest)));
175 return _SQLExec(lcSql);
179 protected override Boolean
_DataChanges(String tcTable, Dictionary<String, Object> toParams)
181 String lcCaseLetraServicios =
"";
182 List<TraspasColumn> loColumns =
new List<TraspasColumn>();
183 List<String> loSql =
new List<String>();
191 String lcLetra, lcTabla, lcTablaServices;
193 loDt = (DataTable)toParams[
"LETRAS"];
194 lcTabla = DB.SQLDatabase(
"SERVEIS",
"SERVEIS");
195 lcTablaServices = DB.SQLDatabase(
"SERVICES",
"C_SERVICIOS");
197 loSql =
new List<String>();
198 foreach (DataRow loRow
in loDt.Rows)
200 lcLetra = Convert.ToString(loRow[
"LETRA_SERV"]);
203 loSql.Add(String.Format(
"UPDATE a SET a.ALBARAN = SUBSTRING(b.ALBARAN, 1, 10), a.ALB_EJER = b.EJERCICIO, a.ALB_LET = LEFT(SUBSTRING(b.ALBARAN, 11, LEN(b.ALBARAN)) + space(1), 2) FROM {0} a INNER JOIN {1} b ON a.NUMERO = b.CODIGO AND a.LETRA = {2} AND RTRIM(b.ALBARAN) <> '';", lcTablaServices, lcTabla, DB.SQLString(lcLetra)));
205 if(_UsaSeries) loSql.Add(String.Format(
"UPDATE c SET c.ARTICULO = s.ARTICULO FROM {0} c INNER JOIN {1} s ON c.SERIE = s.SERIE AND c.EMPRESA = s.CODEMP WHERE RTRIM(c.ARTICULO) = '' AND RTRIM(c.SERIE) <> '' ", lcTablaServices, DB.SQLDatabase(
"COMUNES",
"COMPRAS")));
214 lcCaseLetraServicios = _GetCaseLetras(toParams,
"LETRA_SERV",
"a.EMPRESA");
216 loSql.Add(String.Format(
"UPDATE se SET se.ARTICULO = SUBSTRING(a.SERIE, 3, LEN(a.SERIE)) FROM {0} se INNER JOIN {1} a ON se.EMPRESA = a.EMPRESA AND se.NUMERO = a.SERVEI AND se.LETRA = {2} LEFT JOIN {3} b ON a.ARTICULO = b.CODIGO WHERE b.CODIGO is NULL AND SUBSTRING(a.SERIE, 1, 2) = 'C-' AND 'C-' + a.ARTICULO <> SERIE; ", DB.SQLDatabase(
"SERVICES",
"SERV_MAT"), DB.SQLDatabase(
"SERVEIS",
"MATERSER"), lcCaseLetraServicios, DB.SQLDatabase(
"GESTION",
"ARTICULO")));
218 loSql.Add(String.Format(
"UPDATE se SET se.ARTICULO = co.ARTICULO FROM {0} se INNER JOIN {1} a ON se.EMPRESA = a.EMPRESA AND se.NUMERO = a.SERVEI AND se.LETRA = {2} AND se.LINEA = a.LINIA INNER JOIN {3} co ON co.SERIE = a.SERIE AND a.EMPRESA = co.CODEMP LEFT JOIN {4} b ON a.ARTICULO = b.CODIGO WHERE b.CODIGO is NULL;", DB.SQLDatabase(
"SERVICES",
"SERV_MAT"), DB.SQLDatabase(
"SERVEIS",
"MATERSER"), lcCaseLetraServicios, DB.SQLDatabase(
"COMUNES",
"COMPRAS"), DB.SQLDatabase(
"GESTION",
"ARTICULO")));
220 loSql.Add(String.Format(
"UPDATE se SET se.NOMBRE = a.NOMBRE FROM {0} se INNER JOIN {1} a ON se.ARTICULO = a.CODIGO WHERE RTRIM(se.NOMBRE) = ''; ", DB.SQLDatabase(
"SERVICES",
"SERV_MAT"), DB.SQLDatabase(
"GESTION",
"ARTICULO")));
228 lcCaseLetraServicios = _GetCaseLetras(toParams,
"LETRA_SERV",
"a.EMPRESA");
230 loSql.Add(String.Format(
"UPDATE se SET se.ARTICULO = co.ARTICULO FROM {0} se INNER JOIN {1} a ON se.EMPRESA = a.EMPRESA AND se.NUMERO = a.SERVEI AND se.LETRA = {2} AND se.LINEA = a.LINIA INNER JOIN {3} co ON co.SERIE = a.SERIE AND a.EMPRESA = co.CODEMP LEFT JOIN {4} b ON a.ARTICULO = b.CODIGO WHERE b.CODIGO is NULL; ", DB.SQLDatabase(
"SERVICES",
"SERSER"), DB.SQLDatabase(
"SERVEIS",
"MATERSER"), lcCaseLetraServicios, DB.SQLDatabase(
"COMUNES",
"COMPRAS"), DB.SQLDatabase(
"GESTION",
"ARTICULO")));
235 return _SQLExec(loSql);
override bool _Import(String tcTable, Dictionary< String, Object > toParams)
Es como el tipo de entrada asientos pero por negocio, sin formulario, pq quiero que me haga las propu...
override string _NombreProceso()
Nombre del proceso
override Boolean _DataChanges(String tcTable, Dictionary< String, Object > toParams)