2 using System.Collections.Generic;
11 using System.Windows.Forms;
27 # region PROPIEDADES PÚBLICAS 34 private bool _llHera = Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_hera"));
36 private string _cEmpresa = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_empresa"));
37 private string _cAny = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_any"));
39 private addons.
fideliza.fideliza _ofideliza = FIDELIZA._Get_Objeto_Fideliza();
48 [InjectionConstructor]
51 oFidelizaFuncsDA = fidelizaFuncsDA;
53 #endregion Contructors 65 public DataTable
_Calcular_Puntos(
string tcNumero,
string tcLetra, DateTime tdFecha, decimal tnValorPunto,
int tnSession = 0,
bool tlCancelar =
false)
68 bool llAbono, llAplicar;
69 int lnSessionAux, lnRecno, lnLinia;
71 string lcSQL, lcSelect, lcWhere, lcOrder, lcJoinFactor, lcWhereFactor, lcJoinJAC, lcInstr;
73 lnPuntos = lnSessionAux = lnRecno = lnLinia = 0;
74 lcSQL = lcSelect = lcWhere = lcOrder = lcJoinFactor = lcWhereFactor = lcJoinJAC = lcInstr =
string.Empty;
75 llAbono = llAplicar =
false;
78 DataTable ldtFACTPTOS;
80 DataTable ldtFACTPTOS2;
81 DataTable ldtFACTPTOS3;
82 DataTable ldtFACTPTOS4;
83 DataTable ldtFACTPTOS5;
84 DataTable ldtFACTPTOS6;
85 DataTable ldtFACTPTOS7;
86 DataTable ldtFACTPTOS8;
87 DataTable ldtFACTPTOS9;
88 DataTable ldtFACTPTOS10;
89 DataTable ldtFACTPTOS11;
91 ldtLinVen = oFidelizaFuncsDA.
GetLineasVenta( _cEmpresa, tcNumero, tcLetra, _cAny);
106 ldtFACTPTOS = oFidelizaFuncsDA.
GetLineasFacturacionPtos(_cEmpresa, tcNumero, tcLetra, tdFecha, out lcSelect, out lcWhere, out lcOrder);
137 DBfunctions.SQLUnionDatatable(ref ldtFACTPTOS, ldtFACTPTOS2);
146 DBfunctions.SQLUnionDatatable(ref ldtFACTPTOS, ldtFACTPTOS3);
154 DBfunctions.SQLUnionDatatable(ref ldtFACTPTOS, ldtFACTPTOS4);
162 DBfunctions.SQLUnionDatatable(ref ldtFACTPTOS, ldtFACTPTOS5);
170 DBfunctions.SQLUnionDatatable(ref ldtFACTPTOS, ldtFACTPTOS6);
178 DBfunctions.SQLUnionDatatable(ref ldtFACTPTOS, ldtFACTPTOS7);
185 DBfunctions.SQLUnionDatatable(ref ldtFACTPTOS, ldtFACTPTOS8);
193 DBfunctions.SQLUnionDatatable(ref ldtFACTPTOS, ldtFACTPTOS9);
201 DBfunctions.SQLUnionDatatable(ref ldtFACTPTOS, ldtFACTPTOS10);
209 DBfunctions.SQLUnionDatatable(ref ldtFACTPTOS, ldtFACTPTOS11);
220 ldtFACTPTOS10 = null;
221 ldtFACTPTOS11 = null;
224 var ldtLINVENPTOSAUX = (from a in ldtLinVen.AsEnumerable()
225 join b in ldtFACTPTOS.AsEnumerable()
228 linia = a.Field<
int>(
"linia")
232 linia = b.Field<
int>(
"linia")
235 from c in leftJoin.DefaultIfEmpty()
238 actividad = a.Field<
string>(
"actividad"),
239 cliente = a.Field<
string>(
"cliente"),
240 tarifa = a.Field<
string>(
"tarifa"),
241 articulo = a.Field<
string>(
"articulo"),
242 nombre_articulo = a.Field<
string>(
"definicion"),
243 linia = a.Field<
int>(
"linia"),
244 importeiva = a.Field<decimal>(
"importeiva"),
245 puntos = a.Field<decimal>(
"puntos"),
246 subfamilia = a.Field<
string>(
"subfamilia"),
247 familia = a.Field<
string>(
"familia"),
248 marca = a.Field<
string>(
"marca"),
249 factor = (c == null ? 99999 : c.Field<decimal>(
"factor")),
250 sumar = (c == null ? 0 : c.Field<
int>(
"sumar")),
251 factividad = (c == null ?
string.Empty : c.Field<
string>(
"actividad")),
252 fcliente = (c == null ?
string.Empty : c.Field<
string>(
"cliente")),
253 ftarifa = (c == null ?
string.Empty : c.Field<
string>(
"tarifa")),
254 farticulo = (c == null ?
string.Empty : c.Field<
string>(
"articulo")),
255 fsubfamilia = (c == null ?
string.Empty : c.Field<
string>(
"subfamilia")),
256 ffamilia = (c == null ?
string.Empty : c.Field<
string>(
"familia")),
257 fmarca = (c == null ?
string.Empty : c.Field<
string>(
"marca")),
261 }).__CopyToDataTable();
265 foreach (DataRow ldrItem
in ldtLINVENPTOSAUX.Rows)
268 ldrItem[
"numreg"] = lnRecno;
271 var ldtLINVENPTOS = (from item in ldtLINVENPTOSAUX.AsEnumerable()
274 linia = item.Field<
int>(
"linia")
278 articulo = g.Max(x => x.Field<
string>(
"articulo")),
279 nombre_articulo = g.Max(x => x.Field<
string>(
"nombre_articulo")),
281 importeiva = g.Max(x => x.Field<decimal>(
"importeiva")),
282 puntos = g.Max(x => x.Field<decimal>(
"puntos")),
283 factor = g.Sum(x => x.Field<decimal>(
"factor")),
284 sumar = g.Sum(x => x.Field<
int>(
"sumar")),
285 puntoscalc = g.Max(x => x.Field<decimal>(
"puntoscalc"))
286 }).__CopyToDataTable();
289 foreach (DataRow ldrItem
in ldtLINVENPTOSAUX.Rows)
294 lnLinia = Convert.ToInt32(ldrItem[
"linia"]);
297 if (Convert.ToBoolean(ldrItem[
"aplicar"]))
299 if (!
string.IsNullOrWhiteSpace(Convert.ToString(ldrItem[
"factividad"])))
303 if (!
string.IsNullOrWhiteSpace(Convert.ToString(ldrItem[
"fcliente"])))
307 if (!
string.IsNullOrWhiteSpace(Convert.ToString(ldrItem[
"ftarifa"])))
311 if (!
string.IsNullOrWhiteSpace(Convert.ToString(ldrItem[
"farticulo"])))
315 if (!
string.IsNullOrWhiteSpace(Convert.ToString(ldrItem[
"fsubfamilia"])))
319 if (!
string.IsNullOrWhiteSpace(Convert.ToString(ldrItem[
"ffamilia"])))
323 if (!
string.IsNullOrWhiteSpace(Convert.ToString(ldrItem[
"fmarca"])))
339 DataRow[] ldrs = ldtLINVENPTOS.Select(
"linia=" + lnLinia);
341 if (ldrs.Length == 1)
343 ldrs[0][
"factor"] = Convert.ToDecimal(ldrItem[
"factor"]);
344 ldrs[0][
"sumar"] = Convert.ToInt32(ldrItem[
"sumar"]);
348 foreach (DataRow ldrItem2
in ldtLINVENPTOSAUX.Rows)
350 if (Convert.ToInt32(ldrItem2[
"linia"]) == lnLinia && Convert.ToInt32(ldrItem2[
"numreg"]) != lnRecno)
351 ldrItem2[
"aplicar"] =
false;
357 foreach (DataRow ldrItem
in ldtLINVENPTOS.Rows)
361 if (Convert.ToDecimal(ldrItem[
"puntos"]) == 0 || tlCancelar)
363 lnPuntos = Convert.ToDecimal(ldrItem[
"importeiva"]) * tnValorPunto;
364 llAbono = (Convert.ToDecimal(ldrItem[
"importeiva"]) < 0);
367 lnPuntos = Convert.ToDecimal(ldrItem[
"puntos"]);
371 if (ldrItem[
"factor"] != DBNull.Value && Convert.ToDecimal(ldrItem[
"factor"]) != 99999M)
372 lnPuntos = lnPuntos * Convert.ToDecimal(ldrItem[
"factor"]);
375 if (ldrItem[
"sumar"] != DBNull.Value && Convert.ToInt32(ldrItem[
"sumar"]) != 0)
376 lnPuntos = lnPuntos + Convert.ToInt32(ldrItem[
"SUMAR"]) * (llAbono ? -1 : 1);
381 switch (_ofideliza._FidelizaWS._RedondeoPuntos)
384 lnPuntos = Math.Truncate(lnPuntos);
388 lnPuntos = Math.Round(lnPuntos, 0, MidpointRounding.AwayFromZero);
392 lnPuntos = Math.Ceiling(Math.Abs(lnPuntos));
394 lnPuntos = lnPuntos * -1;
398 ldrItem[
"puntoscalc"] = lnPuntos;
404 ldtLINVENPTOSAUX = null;
407 return ldtLINVENPTOS;
424 if (
string.IsNullOrWhiteSpace(tcPrincipal))
426 loTarjetas._Cif = loCliente._NIF;
427 loTarjetas._Nombre = loCliente._Nombre;
428 loTarjetas._Empresa = loCliente._RazonComercial;
429 loTarjetas._CodPost = loCliente._CodPost;
430 loTarjetas._Direccion = loCliente._Direccion;
431 loTarjetas._Email = loCliente._Email;
432 loTarjetas._Telefono = loCliente._Telefono;
433 loTarjetas._Poblacion = loCliente._Poblacion;
434 loTarjetas._Provincia = loCliente._Provincia;
435 loTarjetas._Pais = loCliente._Pais;
438 loTarjetas._TPrincipal = tcPrincipal.Trim();
440 loTarjetas._Codigo = tcTarjeta;
452 loTarjetas._CargarDatosTarjeta(tcTarjeta);
454 if (!loTarjetas._Activa)
456 loTarjetas._Codigo = tcTarjeta;
457 loTarjetas._Show(
true);
468 int lnLenCad = tcMaxTarjeta.Length;
469 string lcResult =
"";
472 if (!tcMaxTarjeta.__IsNumber())
478 Int64 lnMax = Convert.ToInt64(tcMaxTarjeta);
480 lcResult = Convert.ToString(lnMax);
496 string lcTarjeta =
"";
497 string lcEmpresa = EW_GLOBAL._GetVariable(
"wc_empresa").ToString();
499 if (!Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_factser")))
502 lcTarjeta = DB.SQLValor(
"CAB_AV",
"EJERCICIO = '" + tcEjercicio +
"' AND EMPRESA = '" + lcEmpresa +
"' AND NUMERO = '" + tcTarjetaAbono +
"' AND LETRA", tcLetraAbono,
"TARJETAFID", tcAliasDB).ToString();
513 addons.fideliza.fideliza lofideliza = addons.fideliza.FIDELIZA._Get_Objeto_Fideliza();
516 Visual.Forms.frmBuscarTarjetas loFormBuscar =
new Visual.Forms.frmBuscarTarjetas(1);
517 loFormBuscar._ShowDialog();
519 if (loFormBuscar.DialogResult == DialogResult.OK)
520 return loFormBuscar._Tarjeta;
533 loDatosDoc.Ejercicio =
"";
534 loDatosDoc.Numero =
"";
535 loDatosDoc.Letra =
"";
536 loDatosDoc.Tarjeta =
"";
537 loDatosDoc.Linia = 0;
539 addons.fideliza.fideliza lofideliza = addons.fideliza.FIDELIZA._Get_Objeto_Fideliza();
541 string lcSelectLetra =
"";
542 if (Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_factser")))
543 lcSelectLetra =
", V.LETRA";
545 string lcSelectTarjeta =
"";
546 if (
string.IsNullOrWhiteSpace(tcTarjeta))
547 lcSelectTarjeta =
", V.TARJETAFID";
549 string lcAny = EW_GLOBAL._GetVariable(
"wc_any").ToString();
551 DataTable ldtEjercicios =
new DataTable();
552 string lcAnyAnterior =
string.Empty;
553 DB.SQLExec(
"SELECT [any] AS ejer, anterior FROM " + DB.SQLDatabase(
"COMUNES",
"EJERCICI") +
" WHERE [any] = " + DB.SQLString(EW_GLOBAL._GetVariable(
"wc_any")), ref ldtEjercicios);
554 if (ldtEjercicios.Rows.Count > 0)
556 lcAnyAnterior = Convert.ToString(ldtEjercicios.Rows[0][
"anterior"]).Trim();
559 string lcEmpresa = EW_GLOBAL._GetVariable(
"wc_empresa").ToString();
561 DataTable ldtAlbAbonos =
new DataTable();
564 string lcCliente =
string.Empty;
566 lcCliente =
"C.CLIENTEERP";
568 lcCliente =
"C.CLIENTE";
571 string lcSQL =
"Select V.EJERCICIO, V.NUMERO " + lcSelectLetra +
", C.FECHA, " + lcCliente + lcSelectTarjeta +
572 " From " + DB.SQLDatabase(lofideliza._AliasDB,
"CAB_AV") +
" V " +
573 " Inner Join [multiples_ejercicios].dbo.C_ALBVEN C ON V.EMPRESA = C.EMPRESA AND V.NUMERO = C.NUMERO AND V.LETRA = C.LETRA AND Year(C.FECHA) = [master].dbo.val(V.EJERCICIO) " +
574 " Where (V.EMPRESA = " + DB.SQLString(lcEmpresa) +
" " +
575 (lofideliza._Configuracion._OrigenAbonos ==
false ?
"AND V.TIPO = 1 AND V.TARJETAFID <> '' AND V.NUM_AB = '' " :
"") +
576 (!
string.IsNullOrWhiteSpace(tcTarjeta) ?
"AND V.TARJETAFID = '" + tcTarjeta +
"'" :
"") +
")";
579 if (!
string.IsNullOrWhiteSpace(lcAnyAnterior))
581 DB.SQLExecEjer(lcSQL, ref ldtAlbAbonos,
new string[] { lcAny, lcAnyAnterior });
585 DB.SQLExecEjer(lcSQL, ref ldtAlbAbonos,
new string[] { lcAny });
589 loSeleccionar._Titulo =
"Documentos de venta a abonar";
590 loSeleccionar._DataTable = ldtAlbAbonos;
591 loSeleccionar._Solo_lectura =
true;
592 loSeleccionar._ShowDialog();
594 if (loSeleccionar.DialogResult ==
System.Windows.Forms.DialogResult.OK)
596 loDatosDoc.Ejercicio = loSeleccionar._DataRowSelect[
"Ejercicio"].ToString();
597 loDatosDoc.Numero = loSeleccionar._DataRowSelect[
"Numero"].ToString();
598 if (Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_factser")))
599 loDatosDoc.Letra = loSeleccionar._DataRowSelect[
"Letra"].ToString();
600 if (
string.IsNullOrWhiteSpace(tcTarjeta))
601 loDatosDoc.Tarjeta = loSeleccionar._DataRowSelect[
"TarjetaFid"].ToString();
603 loDatosDoc.Tarjeta = tcTarjeta;
606 return loSeleccionar.DialogResult ==
System.Windows.Forms.DialogResult.OK;
616 int lnCobTarjFid = 0;
618 addons.fideliza.fideliza lofideliza = addons.fideliza.FIDELIZA._Get_Objeto_Fideliza();
619 string lcAny = EW_GLOBAL._GetVariable(
"wc_any").ToString();
620 string lcEmpresa = EW_GLOBAL._GetVariable(
"wc_empresa").ToString();
621 DataTable ldtCobrosTarjFid =
new DataTable();
623 string lcSQL =
"Select left(numero, (CASE WHEN charindex('/',numero) > 0 THEN charindex('/',numero) ELSE len(numero) END) - 1) As NUMERO " +
624 " From " + DB.SQLDatabase(lofideliza._AliasDB,
"COBTARJFID") +
625 " Where EJERCICIO = " + DB.SQLString(lcAny) +
626 " And EMPRESA = " + DB.SQLString(lcEmpresa) +
627 " And NUMERO <> ''" +
630 if (DB.SQLExec(lcSQL, ref ldtCobrosTarjFid) && ldtCobrosTarjFid.Rows.Count > 0)
632 DataRow[] loRows = ldtCobrosTarjFid.Select(
"LTrim(NUMERO) = LTrim('" + tcFactura +
"') AND NUMERO != ''");
633 lnCobTarjFid = loRows.Count();
647 public int _CobrosTarjeta(
string tcTablaCobros,
string tcNumeroDocumento,
string tcLetraDocumento,
string lcCondicion =
"")
649 DataTable tdtCobros =
new DataTable();
650 return _CobrosTarjeta(tcTablaCobros, tcNumeroDocumento, tcLetraDocumento, lcCondicion, out tdtCobros);
662 public int _CobrosTarjeta(
string tcTablaCobros,
string tcNumeroDocumento,
string tcLetraDocumento,
string lcCondicion, out DataTable tdtCobros)
665 tdtCobros =
new DataTable();
667 addons.fideliza.fideliza lofideliza = addons.fideliza.FIDELIZA._Get_Objeto_Fideliza();
668 string lcEjercicio = EW_GLOBAL._GetVariable(
"wc_any").ToString();
669 string lcEmpresa = EW_GLOBAL._GetVariable(
"wc_empresa").ToString();
670 DataTable ldtCobrosTarjFid =
new DataTable();
672 string lcSql =
"Select * " +
673 " From " + DB.SQLDatabase(lofideliza._AliasDB, tcTablaCobros) +
674 " Where EJERCICIO = " + DB.SQLString(lcEjercicio) +
675 " And EMPRESA = " + DB.SQLString(lcEmpresa) +
676 " And NUMERO = " + DB.SQLString(tcNumeroDocumento) +
677 " And LETRA = " + DB.SQLString(tcLetraDocumento) +
678 (!
string.IsNullOrWhiteSpace(lcCondicion) ?
" And " + lcCondicion :
"");
680 if (DB.SQLExec(lcSql, ref tdtCobros) && tdtCobros != null)
682 lnCobros = tdtCobros.Rows.Count;
698 int lnCobTarjFid = _CobrosTarjeta(
"COBTARJFID", tcNumero, tcLetra);
701 if (lnCobTarjFid == 0 && !
string.IsNullOrWhiteSpace((tcFactura)))
702 lnCobTarjFid = _Cobros_Facturas_CobTarFid(tcFactura);
705 int lnCobTarjReg = _CobrosTarjeta(
"COBTARJREG", tcNumero, tcLetra,
"TIPOTARJ = 0");
708 if (lnCobTarjReg == 0 && !
string.IsNullOrWhiteSpace((tcFactura)))
709 lnCobTarjReg = _Cobros_Facturas_CobTarFid(tcFactura);
712 int lnCobTarjVal = _CobrosTarjeta(
"COBTARJREG", tcNumero, tcLetra,
"TIPOTARJ = 1");
715 if (lnCobTarjVal == 0 && !
string.IsNullOrWhiteSpace((tcFactura)))
716 lnCobTarjVal = _Cobros_Facturas_CobTarFid(tcFactura);
723 return loCobros_Con_Tarjeta;
734 bool lb_Es_Articulo_Regalo =
false;
736 if (
string.IsNullOrWhiteSpace(tcArticulo) ||
string.IsNullOrWhiteSpace(tcTarifa))
742 lcSql =
"Select ART_REG.ARTICULO " +
743 " From " + DB.SQLDatabase(_ofideliza._AliasDB,
"ART_REG") +
" ART_REG " +
744 " Where ART_REG.EMPRESA = " + DB.SQLString(_cEmpresa) +
745 " And ART_REG.ARTICULO = " + DB.SQLString(tcArticulo) +
746 " And ART_REG.TARIFA = " + DB.SQLString(tcTarifa);
748 DataTable ldtArt_Reg =
new DataTable();
749 if (DB.SQLExec(lcSql, ref ldtArt_Reg) && ldtArt_Reg.Rows.Count > 0)
751 lb_Es_Articulo_Regalo =
true;
754 return lb_Es_Articulo_Regalo;
765 string lcEmpresa = toDocumento._Empresa;
766 string lcNumero = toDocumento._Numero;
767 string lcLetra = toDocumento._Letra;
771 lcSql =
"Select LIN_AV.TARJETAREG " +
772 " From " + DB.SQLDatabase(
"GESTION",
"D_ALBVEN") +
" D_ALBVEN " +
773 " Inner Join " + DB.SQLDatabase(
"TPV",
"C_ALBVEN") +
" C_ALBVEN " +
774 " On C_ALBVEN.EJERCICIO = " + DB.SQLString(_cAny) +
" And D_ALBVEN.EMPRESA = C_ALBVEN.EMPRESA And D_ALBVEN.NUMERO = C_ALBVEN.NUMERO And C_ALBVEN.LETRA = D_ALBVEN.LETRA " +
775 " Inner Join " + DB.SQLDatabase(loFideliza._AliasDB,
"LIN_AV") +
" LIN_AV " +
776 " On LIN_AV.EJERCICIO = " + DB.SQLString(_cAny) +
" And D_ALBVEN.EMPRESA = LIN_AV.EMPRESA And D_ALBVEN.NUMERO = LIN_AV.NUMERO And D_ALBVEN.LETRA = LIN_AV.LETRA And D_ALBVEN.LINIA = LIN_AV.LINIA " +
777 " Inner Join " + DB.SQLDatabase(loFideliza._AliasDB,
"ART_REG") +
" ART_REG " +
778 " On ART_REG.ARTICULO = D_ALBVEN.ARTICULO And ART_REG.TARIFA = C_ALBVEN.TARIFA And ART_REG.EMPRESA = C_ALBVEN.EMPRESA " +
779 " Where LIN_AV.EJERCICIO = " + DB.SQLString(_cAny) +
780 " And D_ALBVEN.EMPRESA = " + DB.SQLString(lcEmpresa) +
781 " And D_ALBVEN.NUMERO = " + DB.SQLString(lcNumero) +
782 " And D_ALBVEN.LETRA = " + DB.SQLString(lcLetra) +
783 " And D_ALBVEN.ARTICULO <> '' " +
784 " And D_ALBVEN.TIPO_IVA <> '' " +
785 " And LIN_AV.TARJETAREG = ''";
787 DataTable ldtTarjetasRegalo =
new DataTable();
789 if (DB.SQLExec(lcSql, ref ldtTarjetasRegalo) && ldtTarjetasRegalo.Rows.Count > 0)
791 toDocumento._MessageBox(
"El albarán contiene líneas con tarjetas de regalo asociadas que no han sido activadas.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, DialogResult.OK);
802 DataTable ldtLog =
new DataTable();
803 ldtLog.Columns.Add(
"Fecha", typeof(DateTime));
804 ldtLog.Columns.Add(
"Proceso", typeof(
string));
807 DataTable ldtTaulaLog =
new DataTable();
808 if (DB.SQLExec(
"Select * " +
809 " From " + DB.SQLDatabase(loFideliza._AliasDB,
"FIDELILOG") +
810 " Where TIPO <> 0", ref ldtTaulaLog) ==
false)
813 foreach (DataRow loLog
in ldtTaulaLog.Rows)
815 string lcXMLEnv = loLog[
"ENVXML"].ToString().Trim();
816 int lnTipo = Convert.ToInt32(loLog[
"TIPO"]);
818 DataTable ldtXML = loFideliza._FidelizaWS._XmlToCursor(lcXMLEnv,
"NODO");
820 if (ldtXML.Rows.Count > 0)
822 string lcNumero = ldtXML.Rows[0][
"numero"].ToString();
823 string lcLetra = ldtXML.Rows[0][
"letra"].ToString();
824 string lcTarjeta = ldtXML.Rows[0][
"tarjeta"].ToString();
825 DateTime ldtFecha = Convert.ToDateTime(ldtXML.Rows[0][
"FECHA"]);
827 string lcProceso =
"";
832 lcProceso =
"Envío de puntos de la tarjeta de fidelización " + lcTarjeta +
" para el documento " + lcLetra + lcNumero;
835 lcProceso =
"Liquidación de puntos de la tarjeta de fidelización " + lcTarjeta +
" para el documento " + lcLetra + lcNumero;
838 lcProceso =
"Cobro saldo de la tarjeta de regalo " + lcTarjeta +
" para el documento " + lcLetra + lcNumero;
841 lcProceso =
"Abono saldo de la tarjeta de regalo " + lcTarjeta +
" para el documento " + lcLetra + lcNumero;
844 lcProceso =
"Activación de la tarjeta de regalo " + lcTarjeta +
" para el documento " + lcLetra + lcNumero;
847 lcProceso =
"Activación de la tarjeta de fidelización " + lcTarjeta;
853 DataRow loNewLog = ldtLog.NewRow();
854 loNewLog[
"Fecha"] = ldtFecha;
855 loNewLog[
"Proceso"] = lcProceso;
856 ldtLog.Rows.Add(loNewLog);
861 if (ldtLog.Rows.Count > 0)
864 frmSeleccionar._DataTable = ldtLog;
865 frmSeleccionar._Boto_Aceptar =
false;
866 frmSeleccionar._Solo_lectura =
true;
867 frmSeleccionar._Texto_Cancelar =
"&Cerrar";
868 frmSeleccionar._Titulo =
"Envíos pendientes a la web de fidelización";
869 frmSeleccionar._ShowDialog();
881 decimal lnValorPtoAcum, lnValorPtoLiquida, lnDecimales;
883 string lcMens, lcMascara, lcCadWeb, lcNIF, lcNombreEmp, lcEmail, lcDir, lcPob, lcCodPost, lcTelefono, lcNombre;
885 llExisteTueFid =
false;
886 lnValorPtoAcum = lnValorPtoLiquida = lnDecimales = lnRes = lnTipo = 0;
887 lcMens = lcMascara = lcCadWeb = lcNIF = lcNombreEmp = lcEmail = lcDir = lcPob = lcCodPost = lcTelefono = lcNombre =
string.Empty;
890 lcNombre = tcNombre.Trim().ToLower();
892 addons.fideliza.fideliza lofideliza = addons.fideliza.FIDELIZA._Get_Objeto_Fideliza();
895 lofideliza._FidelizaWS._URL = lcNombre;
896 llExisteTueFid = lofideliza._FidelizaWS._ExisteFideliza(out lnTipo);
902 FUNCTIONS._MessageBox(
"El nombre de la web de fidelización entrado no existe. " + Environment.NewLine +
"Debe registrar mediante el botón Registrar web.",
"Probar URL", MessageBoxButtons.OK, MessageBoxIcon.Information);
905 FUNCTIONS._MessageBox(
"La web de fidelización entrada está desactivada.",
"Probar URL", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
910 lofideliza._FidelizaWS._URL = lcNombre;
912 lnValorPtoAcum = lofideliza._FidelizaWS._ValorPunto(1);
914 if (
string.IsNullOrWhiteSpace(lofideliza._FidelizaWS._Error_Message))
915 lnValorPtoLiquida = lofideliza._FidelizaWS._ValorPunto(2);
919 if (!
string.IsNullOrWhiteSpace(lofideliza._FidelizaWS._Error_Message))
921 FUNCTIONS._MessageBox(lofideliza._FidelizaWS._Error_Message,
"Error conexión", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
928 lcMens =
"ACUMULACIÓN: POR CADA 1 € = " + lnValorPtoAcum.ToString(_Mascara.
_Mascara_Net) +
929 (lnValorPtoAcum == 1 ?
" PUNTO " :
" PUNTOS ") +
930 lofideliza._FidelizaWS._NombreSistema.ToUpper() +
931 Environment.NewLine + Environment.NewLine +
932 "LIQUIDACIÓN: POR CADA 1 PUNTO " + lofideliza._FidelizaWS._NombreSistema.ToUpper() +
" = " + lnValorPtoLiquida.ToString(_Mascara.
_Mascara_Net) +
" € ";
934 FUNCTIONS._MessageBox(lcMens,
"Probar URL", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
948 string lcCIF, lcValor;
951 lcCIF =
string.Empty;
952 lcValor = tcValor.Trim();
955 if (!
string.IsNullOrWhiteSpace(lcValor))
957 lcValor = lcValor.Replace(
"-",
"");
958 lcValor = lcValor.Replace(
".",
"");
959 lcValor = lcValor.Replace(
" ",
"");
961 lnLen = lcValor.Length;
966 lcValor = Enumerable.Repeat(
"0", lnZeros) + lcValor;
969 lcCIF = lcValor.Replace(
"-",
"").Trim(); ;
984 decimal lnPuntos = 0;
986 switch (_ofideliza._FidelizaWS._RedondeoPuntos)
991 lnPuntos = Math.Floor(tnImporte / tnValorPunto);
993 lnPuntos = Math.Floor(tnImporte * tnValorPunto);
999 lnPuntos = Math.Round(tnImporte / tnValorPunto, 0);
1001 lnPuntos = Math.Round(tnImporte * tnValorPunto, 0);
1007 lnPuntos = Math.Floor(Math.Abs(tnImporte) / tnValorPunto) + 1;
1009 lnPuntos = Math.Floor(Math.Abs(tnImporte) * tnValorPunto) + 1;
1012 lnPuntos = lnPuntos * -1;
1034 if (tcNumero.Substring(Math.Max(0, tcNumero.Length - 2)) ==
"TB")
1039 DataTable datos =
new DataTable();
1040 string lcSql =
" SELECT * FROM " + DB.SQLDatabase(
"FACTUCERT",
"FCREGCERT") +
1041 " WHERE EMPRESA = " + DB.SQLString(tcEmpresa) +
1042 " AND NUMERO = " + DB.SQLString(tcNumero) +
1043 " AND LETRA = " + DB.SQLString(tcLetra) +
1044 " AND TIPO_DOC = 2 " +
1045 " AND EJERCICIO = " + DB.SQLString(tcEjercicio);
1047 DB.SQLExec(lcSql, ref datos);
1049 if (datos.Rows.Count == 0)
1056 string lcBorrador = Convert.ToString(datos.Rows[0][
"borrador"]);
1060 lcSql =
"DELETE FROM " + DB.SQLDatabase(
"TUEFID",
"CAB_AV") +
1061 " WHERE EMPRESA = " + DB.SQLString(tcEmpresa) +
1062 " AND NUMERO = " + DB.SQLString(lcBorrador) +
1063 " AND LETRA = " + DB.SQLString(tcLetra) +
1064 " AND EJERCICIO = " + DB.SQLString(tcEjercicio);
1067 lcSql =
"DELETE FROM " + DB.SQLDatabase(
"TUEFID",
"LIN_AV") +
1068 " WHERE EMPRESA = " + DB.SQLString(tcEmpresa) +
1069 " AND NUMERO = " + DB.SQLString(lcBorrador) +
1070 " AND LETRA = " + DB.SQLString(tcLetra) +
1071 " AND EJERCICIO = " + DB.SQLString(tcEjercicio);
1095 DataTable datos =
new DataTable();
1096 string lcSql =
" SELECT * FROM " + DB.SQLDatabase(
"FACTUCERT",
"FCREGCERT") +
1097 " WHERE EMPRESA = " + DB.SQLString(tcEmpresa) +
1098 " AND NUMERO = " + DB.SQLString(tcNumero) +
1099 " AND LETRA = " + DB.SQLString(tcLetra) +
1100 " AND TIPO_DOC = 2 " +
1101 " AND EJERCICIO = " + DB.SQLString(tcEjercicio);
1103 DB.SQLExec(lcSql, ref datos);
1105 if (datos.Rows.Count > 0)
1108 DataTable ldtTemp =
new DataTable();
1109 string lcBorrador = Convert.ToString(datos.Rows[0][
"borrador"]);
1110 lcSql =
"SELECT * FROM " + DB.SQLDatabase(
"TUEFID",
"COBTARJFID") +
1111 " WHERE EMPRESA = " + DB.SQLString(tcEmpresa) +
1112 " AND NUMERO = " + DB.SQLString(lcBorrador) +
1113 " AND LETRA = " + DB.SQLString(tcLetra) +
1115 " AND EJERCICIO = " + DB.SQLString(tcEjercicio);
1117 DB.SQLExec(lcSql, ref ldtTemp);
1118 if (ldtTemp.Rows.Count > 0)
1120 lcSql =
"UPDATE " + DB.SQLDatabase(
"TUEFID",
"COBTARJFID") +
1121 " SET NUMERO = " + DB.SQLString(tcNumero) +
1122 " WHERE EMPRESA = " + DB.SQLString(tcEmpresa) +
1123 " AND NUMERO = " + DB.SQLString(lcBorrador) +
1124 " AND LETRA = " + DB.SQLString(tcLetra) +
1126 " AND EJERCICIO = " + DB.SQLString(tcEjercicio);
1153 DataTable datos =
new DataTable();
1154 string lcSql =
" SELECT * FROM " + DB.SQLDatabase(
"FACTUCERT",
"FCREGCERT") +
1155 " WHERE EMPRESA = " + DB.SQLString(tcEmpresa) +
1156 " AND NUMERO = " + DB.SQLString(tcNumero) +
1157 " AND LETRA = " + DB.SQLString(tcLetra) +
1158 " AND TIPO_DOC = 2 " +
1159 " AND EJERCICIO = " + DB.SQLString(tcEjercicio);
1161 DB.SQLExec(lcSql, ref datos);
1163 if (datos.Rows.Count > 0)
1166 DataTable ldtTemp =
new DataTable();
1167 string lcBorrador = Convert.ToString(datos.Rows[0][
"borrador"]);
1168 lcSql =
"SELECT * FROM " + DB.SQLDatabase(
"TUEFID",
"COBTARJREG") +
1169 " WHERE EMPRESA = " + DB.SQLString(tcEmpresa) +
1170 " AND NUMERO = " + DB.SQLString(lcBorrador) +
1171 " AND LETRA = " + DB.SQLString(tcLetra) +
1173 " AND EJERCICIO = " + DB.SQLString(tcEjercicio) +
1174 " AND TIPOTARJ = 0";
1176 DB.SQLExec(lcSql, ref ldtTemp);
1177 if (ldtTemp.Rows.Count > 0)
1179 lcSql =
"UPDATE " + DB.SQLDatabase(
"TUEFID",
"COBTARJREG") +
1180 " SET NUMERO = " + DB.SQLString(tcNumero) +
1181 " WHERE EMPRESA = " + DB.SQLString(tcEmpresa) +
1182 " AND NUMERO = " + DB.SQLString(lcBorrador) +
1183 " AND LETRA = " + DB.SQLString(tcLetra) +
1185 " AND EJERCICIO = " + DB.SQLString(tcEjercicio) +
1186 " AND TIPOTARJ = 0";
1207 DataTable ldtDatos =
new DataTable();
1208 string lcSql =
" SELECT * FROM " + DB.SQLDatabase(
"TUEFID",
"CAB_AV") +
1209 " WHERE EMPRESA = " + DB.SQLString(tcEmpresa) +
1210 " AND NUMERO = " + DB.SQLString(tcNumero) +
1211 " AND LETRA = " + DB.SQLString(tcLetra) +
1213 " AND TARJETAFID <> '' " +
1214 " AND EJERCICIO = " + DB.SQLString(tcEjercicio);
1215 DB.SQLExec(lcSql, ref ldtDatos);
1216 if (ldtDatos != null && ldtDatos.Rows.Count > 0)
1229 FIDELIZA._ProtocoloWeb =
"https";
1240 FIDELIZA._Entorno = oFidelizaFuncsDA.
GetEntorno();
1259 DataTable loBdTuefid =
new DataTable();
1263 if (DB._SQLExisteBBDD(tablaTuefid))
1265 llOk = DB.SQLExec(
"select empresa, letra from [" + tablaTuefid +
"].dbo.multitiend", ref loBdTuefid);
1268 foreach (DataRow loRow
in loBdTuefid.Rows)
1270 string lcLetra = Convert.ToString(loRow[
"letra"]);
1271 if (!
string.IsNullOrWhiteSpace(lcLetra))
1273 if (lcLetra == tcSerie)
1275 FUNCTIONS._MessageBox(
"ATENCIÓN: No se puede utilizar la serie " + tcSerie +
" porque ya se está utilizando en la opción de Tiendas en Tuefideliza",
"Configuración Tu-Efideliza", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
1300 string lcSql =
string.Empty;
1301 DataTable ldtCOBTARJFID =
new DataTable();
1303 string lcAny = EW_GLOBAL._GetVariable(
"wc_any").ToString();
1304 string lcEmpresa = EW_GLOBAL._GetVariable(
"wc_empresa").ToString();
1307 lcSql =
"SELECT TARJETA, LINEA, PUNTOS, IMPORTE FROM " + DB.SQLDatabase(_ofideliza._AliasDB,
"COBTARJFID") +
1308 " WHERE EJERCICIO = " + DB.SQLString(lcAny) +
1309 " AND EMPRESA = " + DB.SQLString(lcEmpresa) +
1310 " AND NUMERO = " + DB.SQLString(tcNumero) +
1311 " AND LETRA = " + DB.SQLString(tcLetra) +
1312 " AND TIPO = " + DB.SQLString(1) +
1313 " AND ENLAZADO = 0 ";
1315 DB.SQLExec(lcSql, ref ldtCOBTARJFID);
1317 int lnPuntosLiquidadosPendientes = 0;
1319 if (ldtCOBTARJFID != null && ldtCOBTARJFID.Rows.Count > 0)
1322 foreach (DataRow loRow
in ldtCOBTARJFID.Rows)
1324 lnPuntosLiquidadosPendientes += Convert.ToInt32(loRow[
"PUNTOS"]);
1328 return lnPuntosLiquidadosPendientes;
string _Get_Tarjeta_Ejercicio(string tcEjercicio, string tcTarjetaAbono, string tcLetraAbono, string tcAliasDB)
Devuelve la tarjeta del ejercicio y documento indicados
DataTable GetLineasVenta(string empresa, string numero, string letra, string any)
Obtiene DataTable de las lineas de ventas
static AddonsController Instance
Instancia al objeto singleton Addons
Para recuperar el número de cobros con tarjetas
Interfaz de acceso a datos de FidelizaFuncs
bool _ActualizarCobTarjetaFidSiFactuCert(string tcEmpresa, string tcNumero, string tcLetra, string tcEjercicio, sage.ew.docsven.eTipoDocumento toTipo)
Bug 179605: Método para actualizar el número de ticket en COBTARJFID después que haya cambiado al cer...
Argumentos para los eventos lanzados por el addons en caso de error
int _Cobros_Facturas_CobTarFid(string tcFactura)
Devuelve el número de cobros de la factura
string Letra
Letra del documento
bool _Es_Articulo_Regalo(string tcArticulo, string tcTarifa)
Comprueba si el arículo y tarifa están definidos como artículo regalo
Clase negocio del formulario de tarjetas de fidelización
Es como el tipo de entrada asientos pero por negocio, sin formulario, pq quiero que me haga las propu...
int ConTarjetaRegalo
Con tarjeta de regalo
bool _Probar_Url_Fideliza(string tcNombre)
Nos permite probar si es correcta la URL definida
string Tarjeta
Código de tarjeta
void _ComprobarProtocoloWeb()
Task 179295: Comprobar si las conexiones van todavía por http o hay ya que conectar por https este mé...
DataTable GetLineasFacturacionPtosPorArticulos(string lcSelect, string lcWhere, string lcOrder)
Obtiene dataTable facturacion de puntos por articulos
KeyDiccionarioMascara
Clave para diccionario de máscaras
void _AltaTarjetaFideliza(string tcCliente, string tcTarjeta, string tcPrincipal="")
Si la tarjeta introducida en el formulario no existe, llamamos al formulario para darla de alta ...
DataTable GetLineasFacturacionPtosPorTarifa(string lcSelect, string lcWhere, string lcOrder)
Obtiene dataTable facturacion de puntos por Tarifa
Para recuperar datos de un documento, línea y tarjeta
bool _HaAcumuladoPuntosTicket(string tcEmpresa, string tcNumero, string tcLetra, string tcEjercicio)
Bug 179528: Comprobación de si se han acumulado puntos para un documento de venta ...
void _ConsultaTarjetaFideliza(string tcTarjeta, string tcPrincipal="")
Si la tarjeta introducida en el formulario no existe, llamamos al formulario para darla de alta ...
bool _PuedeAcumularPuntosFactucert(string tcEmpresa, string tcNumero, string tcLetra, string tcEjercicio, sage.ew.docsven.eTipoDocumento toTipo)
Comprobar si puede acumular puntos si es un tiquet y está certificado (FACTUCERT) ...
DataTable GetLineasFacturacionPorFamiliaSubfamiliaYMarca(string lcSelect, string lcWhere, string lcOrder)
Obtiene dataTable facturacion de puntos por Familia Subfamilia y Marca
Cobros_Con_Tarjeta _Comprobar_Cobros_Con_Tarjeta(string tcFactura, string tcNumero, string tcLetra)
Devuelve el número de los diferentes cobros con tarjeta del documento
void _Mensaje_TarjetasRegalo(dynamic toDocumento)
Comprueba si hay alguna tarjeta regalo no activada y solo muestra un mensaje
Clase base para el módulo fideliza
void _Mostrar_Log_Error()
Muestra los errores del fichero log
int ConTarjetaFidelizacion
Con tarjeta de fidelización
string _Revisar_Cif(string tcValor)
Metodo para revisar el correcto formato del CIF
bool IsLoaded(string nomAddon)
Indica si está cargado el addon por nombre
Clase de negocio del módulo de fideliza
fideliza(IFidelizaFuncsDA fidelizaFuncsDA)
Constructor
bool _Buscar_Documentos(string tcTarjeta, out Datos_Documento loDatosDoc)
Devuelve los documentos que contienen la tarjeta
string GetEntorno()
Obtiene el entorno
Proporciona características adicionales de las máscaras de Eurowin
IAddonsManager AddonsManager
Gestor de Addons
int ConTarjetaVales
Con vales
string _Obtener_Max_Tarjeta(string tcMaxTarjeta)
Obtener max tarjeta
DataTable GetLineasFacturacionPorSubFamilia(string lcSelect, string lcWhere, string lcOrder)
Obtiene dataTable facturacion de puntos por Subfamilias
DataTable GetLineasFacturacionPorFamiliaYSubfamilia(string lcSelect, string lcWhere, string lcOrder)
Obtiene dataTable facturacion de puntos por Familia y SubFamilia
void _ComprobarEntorno()
Método para obtener el entorno
DataTable GetLineasFacturacionPorFamiliaYMarca(string lcSelect, string lcWhere, string lcOrder)
Obtiene dataTable facturacion de puntos por Familia y Marca
string _Mascara_Net
Máscara convertida en formato .Net
string _Brow_Tarjetas(int tnTipo=1)
Muestra un formulario para la búsqueda de tarjetas
DataTable GetLineasFacturacionPorSubfamiliaYMarca(string lcSelect, string lcWhere, string lcOrder)
Obtiene dataTable facturacion de puntos por Subfamilia y Marca
int _CobrosTarjeta(string tcTablaCobros, string tcNumeroDocumento, string tcLetraDocumento, string lcCondicion, out DataTable tdtCobros)
Devuelve los cobros de una tarjeta dada
bool _ActualizarCobTarjetaRegSiFactuCert(string tcEmpresa, string tcNumero, string tcLetra, string tcEjercicio, sage.ew.docsven.eTipoDocumento toTipo)
Bug 179605: Método para actualizar el número de ticket en COBTARJREG después que haya cambiado al cer...
DataTable GetLineasFacturacionPtosPorCliente(string lcSelect, string lcWhere, string lcOrder)
Obtiene dataTable facturacion de puntos por cliente
DataTable GetLineasFacturacionPtos(string empresa, string numero, string letra, DateTime fecha, out string lcSelect, out string lcWhere, out string lcOrder)
Obtiene dataTable facturacion de puntos
DataTable _Calcular_Puntos(string tcNumero, string tcLetra, DateTime tdFecha, decimal tnValorPunto, int tnSession=0, bool tlCancelar=false)
Calcular puntos en función del documento de venta
bool ComprobarSerieDocumentalFideliza(string tcSerie, string tablaTuefid)
Task 178481: Comprobar si la serie documental está siendo usada por tuefideliza. Movemos esta comprob...
int _CobrosTarjeta(string tcTablaCobros, string tcNumeroDocumento, string tcLetraDocumento, string lcCondicion="")
Devuelve los cobros de una tarjeta dada
string Numero
Número de documento
decimal _Redondeo_Puntos(decimal tnImporte, decimal tnValorPunto, bool tlLiquidar)
Método para el redondeo de puntos
DataTable GetLineasFacturacionPorFamilias(string lcSelect, string lcWhere, string lcOrder)
Obtiene dataTable facturacion de puntos por familia
int _ObtenerPuntosALiquidar(string tcNumero, string tcLetra)
CCR 200157: Método para obtener los puntos a liquidar de un tiquet Lo usaremos antes de imprimir para...
string Ejercicio
Ejercicio