2 using System.Collections.Generic;
18 namespace Sage.
ES.S50.AddonsVirtuales
25 #region VARIABLES PRIVADAS 30 private string _NombreVariable =
"WL_PROTRAN";
33 private S50.Fabricacion.Negocio.Clases.fabricacionConfig _oConfiguracion;
35 private bool _lConPartes = Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_PCostes"));
37 #endregion VARIABLES PRIVADAS 45 public S50.Fabricacion.Negocio.Clases.fabricacionConfig _Configuracion
49 if (_oConfiguracion == null)
50 _oConfiguracion =
new S50.Fabricacion.Negocio.Clases.fabricacionConfig();
52 return _oConfiguracion;
59 public override string Firma {
get;
set; }
64 public bool _BajaSuscripcion
66 get {
return LICENCIAS._BajaSuscripcion(
"FABRICA"); }
69 #endregion PROPIEDADES 81 string _lcEmpresa = EW_GLOBAL._GetVariable(
"wc_empresa").ToString().Trim();
82 bool showPCostes = Convert.ToBoolean(DB.SQLValor(
"empresa",
"codigo", _lcEmpresa,
"pcostes",
"GESTION"));
85 EW_GLOBAL.ValorEnClave_VarGlob(
"wl_PCostes", showPCostes);
91 Nombre2 =
"Fabricación";
94 Clase =
"Fabricacion";
95 Visible = Convert.ToBoolean(EW_GLOBAL._GetVariable(_NombreVariable)) && !_EsAsesorSoloConta();
100 Descripcion =
"Gestión de procesos de producción, transformación y partes de coste";
101 Observaciones =
"Permite el uso de componentes, imputación de costes, control de estados, actualización de costes, cálculos de consumo y ratios, y listados para seguimiento y análisis.";
103 _UrlAyudaAddon =
"https://sage50c.sage.es/help50c/Content/ADDONS/Fabricacion/guia-uso-addon-fabricacion.htm";
105 UserControlConfigType = typeof(S50.Fabricacion.Visual.UserControls.EmpresaPaginaModulosFabricacion);
106 ModuloConfigType = typeof(S50.Fabricacion.Negocio.Clases.fabricacionConfig);
111 #endregion CONSTRUCTORES 113 #region MÉTODOS PROTECTED OVERRIDE 121 return Convert.ToBoolean(EW_GLOBAL._GetVariable(_NombreVariable)) && !_EsAsesorSoloConta();
124 #endregion MÉTODOS PROTECTED OVERRIDE 126 #region MÉTODOS PÚBLICOS OVERRIDE 136 public override object _GetListaPrevia(
string tcClass, Type oTipoObjeto,
string tcPantalla)
140 case "Sage.ES.S50.Fabricacion.Visual.Forms.frmAlbaranProduccion":
142 case "Sage.ES.S50.Fabricacion.Visual.Forms.frmAlbaranTransformacion":
157 return base._BindBrowser(browsertabla);
172 object loInstancia = base._Extension(_key, _mantePrincipal);
174 _key = _key.ToLower().Trim();
182 loInstancia =
new S50.Fabricacion.Negocio.Mantes.ExtensionProduccionPartes(_mantePrincipal);
189 loInstancia =
new S50.Fabricacion.Negocio.Mantes.ExtensionTransformacionPartes(_mantePrincipal);
209 object loInstancia = null;
211 _key = _key.ToLower().Trim();
229 base._BindForm(_nombreForm, _formBase);
231 _nombreForm = _nombreForm.ToLower().Trim();
234 if (_nombreForm ==
"formmante")
236 _nombreForm = _formBase.
_Pantalla.ToLower().Trim();
241 case "frmalbaranproduccion":
242 S50.Fabricacion.Negocio.Mantes.FormExtensionProduccionPartes formmanteext_producPartes =
new S50.Fabricacion.Negocio.Mantes.FormExtensionProduccionPartes((
FormBaseDocumento)_formBase,
this);
245 case "frmalbarantransformacion":
246 S50.Fabricacion.Negocio.Mantes.FormExtensionTransformacionPartes formmanteext_transPartes =
new S50.Fabricacion.Negocio.Mantes.FormExtensionTransformacionPartes((
FormBaseDocumento)_formBase,
this);
260 EW_GLOBAL.ValorEnClave_VarGlob(
"wl_ewproduc",
true);
282 return base._Unload();
292 EW_GLOBAL.ValorEnClave_VarGlob(
"wl_ewproduc",
true);
296 Insertar_Registro_Tabla_Programs();
299 _ActualizarCamposProduccion();
300 _ActualizarSeccion();
306 return base._Update();
319 if (llOk = base._Desinstalar(tcExecute))
324 string lcSql =
"DELETE FROM " + DB.SQLDatabase(
"GESTION",
"PROGRAMS") +
" WHERE UPPER(NOMBRE)='FABRICACIÓN'";
327 llOk = _SetVariable(
false);
344 if (llOk = base._Instalar(tcExecute))
348 Insertar_Registro_Tabla_Programs();
368 DataTable ldtTemp =
new DataTable();
372 foreach (
string lcGrupo
in tlstGrupos)
375 string lcComunes =
"COMU" + lcGrupo;
376 lcSql += !
string.IsNullOrWhiteSpace(lcSql) ?
" UNION " :
"";
378 SELECT codigo FROM {DB.SQLDatabase("COMUNES
", "OPCFLAG
")} o 379 LEFT JOIN { DB.SQLDatabase("COMUNES
", "OPCEMP
")} c ON o.codigo = c.tipo_opc 380 WHERE lower(o.VARIABLE) = { DB.SQLString(_NombreVariable.ToLower())} and c.estado = { DB.SQLTrue()} ";
383 if (!
string.IsNullOrWhiteSpace(lcSql))
384 DB.SQLExec(lcSql, ref ldtTemp);
386 bool llOk = (ldtTemp != null && ldtTemp.Rows.Count > 0);
388 FUNCTIONS._DisposeDatatable(ldtTemp);
399 public override bool _Apertura(
string tcEjerAnt,
string tcEjerActual)
401 return base._Apertura(tcEjerAnt, tcEjerActual);
404 #endregion MÉTODOS PÚBLICOS OVERRIDE 406 #region MÉTODOS PRIVADOS 408 private void Insertar_Registro_Tabla_Programs()
410 string lcSql =
string.Empty;
411 DataTable ldtPrograms =
new DataTable();
412 DB.SQLExec(
"select * from " + DB.SQLDatabase(
"GESTION",
"PROGRAMS") +
" WHERE UPPER(NOMBRE)='FABRICACIÓN'", ref ldtPrograms);
413 if (ldtPrograms.Rows.Count == 0)
416 DB.SQLExec(
"select max(numero) as max from " + DB.SQLDatabase(
"GESTION",
"PROGRAMS"), ref ldtPrograms);
417 Int64 lnNum = Convert.ToInt64(ldtPrograms.Rows[0][
"max"]) + 1;
419 lcSql =
"INSERT INTO " + DB.SQLDatabase(
"GESTION",
"PROGRAMS") +
" (Nombre,Comando,numero,Exe) " +
420 "VALUES ('Fabricación','FPRINCIPAL.MMENU.CANVIARMENUS(" + lnNum.ToString().Trim() +
",''FABRICACION'',''FABRICACION'',''FABRICACION.hlp'')'," + lnNum.ToString().Trim() +
",'')";
425 private bool _SetVariable(
bool tlActivar)
427 if (EW_GLOBAL._Empresa._SetOpcEmp(
"10009", tlActivar))
429 EW_GLOBAL.ValorEnClave_VarGlob(_NombreVariable, tlActivar);
430 EW_GLOBAL.ValorEnClave_VarGlob(
"wl_ewproduc", tlActivar);
437 private bool _GetVariable()
439 return Convert.ToBoolean(EW_GLOBAL._GetVariable(_NombreVariable)) && !_EsAsesorSoloConta();
442 private bool _EsAsesorSoloConta()
444 int lnAsesorContable = Convert.ToInt32(EW_GLOBAL._GetVariable(
"wn_AsesorContable"));
446 if (lnAsesorContable > 0 || EW_GLOBAL._Solucion <= 1)
452 private void _ActualizarSeccion()
454 string lcSql = $
@"UPDATE {DB.SQLDatabase("GESTION
","tipo_cost
")} SET seccion = LTRIM(seccion)";
459 private void _ActualizarCamposProduccion()
461 bool _llPeso = Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_Peso"));
463 DataTable data =
new DataTable();
464 DataTable datadetalle =
new DataTable();
465 Dictionary<string, object> articulo =
new Dictionary<string, object>();
468 decimal lnPorcentaje_Coste_Estructural = 0;
470 decimal lnTotal_Componentes = 0M;
471 decimal lnTotal_Coste_Estructural = 0M;
472 decimal lnTotal_Coste = 0M;
474 decimal lnCoste_Unitario_Componentes = 0M;
475 decimal lnCoste_Unitario_Estructural = 0M;
476 decimal lnCoste_Unitario = 0M;
478 string lcSql =
" Select empresa, numero, articulo, entrada, peso From " + DB.SQLDatabase(
"GESTION",
"C_PROD") +
" Where TotalCoste = 0 ";
479 DB.SQLExec(lcSql, ref data);
481 foreach (DataRow cabecera
in data.Rows)
483 lcSql =
" Select * From " + DB.SQLDatabase(
"GESTION",
"D_PROD") +
484 " Where empresa = " + DB.SQLString(cabecera.Field<
string>(
"empresa")) +
485 " And numero = " + DB.SQLString(cabecera.Field<
string>(
"numero"));
486 DB.SQLExec(lcSql, ref datadetalle);
488 lnPorcentaje_Coste_Estructural = Convert.ToDecimal(DB.SQLValor(
"EMPRESA",
"CODIGO", cabecera.Field<
string>(
"empresa"),
"PORESTRUP",
"GESTION"));
490 lnCoste_Unitario_Componentes = 0M;
491 lnCoste_Unitario_Estructural = 0M;
492 lnCoste_Unitario = 0M;
494 lnTotal_Componentes = 0M;
495 lnTotal_Coste_Estructural = 0M;
498 foreach (DataRow detalle
in datadetalle.Rows)
502 string[] campos =
new string[] {
"ARTICULO",
"COMPONENTE" };
503 string[] valores =
new string[] { cabecera.Field<
string>(
"articulo"), detalle.Field<
string>(
"articulo") };
505 bool llNoActualizarCostePrincipal = Convert.ToBoolean(DB.SQLValor(
"ESCANDAL", campos, valores,
"NOACTCOSTP",
"GESTION"));
506 if (!llNoActualizarCostePrincipal)
508 articulo = DB.SQLREGValor(
"ARTICULO",
"CODIGO", detalle.Field<
string>(
"articulo"),
"GESTION");
510 if (_llPeso && !
string.IsNullOrWhiteSpace(Convert.ToString(articulo[
"peso"])) && Convert.ToString(articulo[
"peso"]) !=
"0")
513 lnTotal_Componentes += detalle.Field<decimal>(
"Coste") * detalle.Field<decimal>(
"Peso");
518 lnTotal_Componentes += detalle.Field<decimal>(
"Coste") * detalle.Field<decimal>(
"Salida");
523 lnTotal_Coste_Estructural = lnTotal_Componentes * (lnPorcentaje_Coste_Estructural / 100);
524 lnTotal_Coste = lnTotal_Componentes + lnTotal_Coste_Estructural;
526 articulo = DB.SQLREGValor(
"ARTICULO",
"CODIGO", cabecera.Field<
string>(
"articulo"),
"GESTION");
528 if (_llPeso && !
string.IsNullOrWhiteSpace(Convert.ToString(articulo[
"peso"])) && Convert.ToString(articulo[
"peso"]) !=
"0")
530 if (cabecera.Field<decimal>(
"Peso") != 0)
533 lnCoste_Unitario_Componentes = lnTotal_Componentes / cabecera.Field<decimal>(
"Peso");
536 lnCoste_Unitario_Estructural = lnTotal_Coste_Estructural / cabecera.Field<decimal>(
"Peso");
541 if (cabecera.Field<decimal>(
"Entrada") != 0)
544 lnCoste_Unitario_Componentes = lnTotal_Componentes / cabecera.Field<decimal>(
"Entrada");
547 lnCoste_Unitario_Estructural = lnTotal_Coste_Estructural / cabecera.Field<decimal>(
"Entrada");
551 lnCoste_Unitario = lnCoste_Unitario_Componentes + lnCoste_Unitario_Estructural;
553 lcSql =
" UPDATE " + DB.SQLDatabase(
"GESTION",
"C_PROD") +
554 " SET PMCOM = " + DB.SQLString(lnCoste_Unitario) +
", " +
555 " Componunit = " + DB.SQLString(lnCoste_Unitario_Componentes) +
", " +
556 " Estrucunit = " + DB.SQLString(lnCoste_Unitario_Estructural) +
", " +
557 " Totalcoste = " + DB.SQLString(lnTotal_Coste) +
", " +
558 " Totalestru = " + DB.SQLString(lnTotal_Coste_Estructural) +
", " +
559 " Totalcompo = " + DB.SQLString(lnTotal_Componentes) +
", " +
560 " Porc_estru = " + DB.SQLString(lnPorcentaje_Coste_Estructural) +
" " +
561 " Where empresa = " + DB.SQLString(cabecera.Field<
string>(
"empresa")) +
562 " And numero = " + DB.SQLString(cabecera.Field<
string>(
"numero"));
567 #endregion MÉTODOS PRIVADOS override bool _Unload()
Se ejecutará este método cuando se cierre eurowin
Nueva interficie madre de IMantes y de la que colgara ewMante. Propiedades: _Codigo, _Nombre, _Error_Message. Metodos: _New, Save, _Delete, _Load, _Existe_Registro, _Clonar
Clase base para el módulo fabricacion
Clase de negocio para la configuración del addon de fabricación
Listas previas albarán de producción
override object _Extension(string _key, sage.ew.interficies.IMante _mantePrincipal)
Método para obtener las instancias de clases de extensiones desde los documentos y mantenimientos ...
Interficie para las extensiones de los browser
override bool Condition()
Condición de activación del addon
override bool _Load()
Se ejecutará este método cuando se cargue el módulo
Clase base para las extensiones de los mantenimientos
bool _CreateDefaultTemplates()
Crear registros por defecto de modelos para el Addon Virtual
override void _BindForm(string _nombreForm, IFormBase _formBase)
Vincula los formularios de la aplicación con los del addon
override object _GetListaPrevia(string tcClass, Type oTipoObjeto, string tcPantalla)
Devuelve la lista prévia del documento
override bool _Update()
Se ejecutará este método cuando se actualize el módulo via FTP
override bool _Apertura(string tcEjerAnt, string tcEjerActual)
Método para realizar apertura un addon
override IBrowserPropiedadesExtendidas _BindBrowser(string browsertabla)
Permite extender el browser
TipoExecute
Tipos de ejecución de los métodos
Interficie con las operaciones básicas de los ManteTRel
override bool _Instalar(TipoExecute tcExecute)
Método para instalar un addon
override bool GetActivoGrupos(List< string > tlstGrupos)
Nos indica si el addon virtual está activa en algun de los grupos de empresa
override bool _Desinstalar(TipoExecute tcExecute)
Método para desinstalar un addon
Fabricacion()
Inicializa una nueva instancia de la classe
override object _ExtensionManteTRel(string _key, sage.ew.interficies.IManteTRel _manteTRelPrincipal, int _ordenAddon)
Método para obtener las instancias de clases de extensiones de mantenimientos de tablas relacionadas ...