From a3b4c2fc77e0373328c0aae7417b81201f7d89f1 Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Thu, 21 Mar 2024 16:41:00 -0600 Subject: [PATCH] Commit inicial de Java --- B4J/C_Principal.bas | 24 + B4J/DBRequestManager.bas | 272 +++++ B4J/Files/MainPage.bjl | Bin 0 -> 1959 bytes B4J/Files/candado.png | Bin 0 -> 17760 bytes B4J/Files/engrane.png | Bin 0 -> 1860 bytes B4J/Files/engrane_fondoblanco.png | Bin 0 -> 5067 bytes B4J/Files/engranes.png | Bin 0 -> 2735 bytes B4J/Files/errorLog.db | Bin 0 -> 189440 bytes B4J/Files/kmt.db | Bin 0 -> 189440 bytes B4J/Files/login.bjl | Bin 0 -> 34345 bytes B4J/Files/logolanter.bmp | Bin 0 -> 150454 bytes B4J/Files/logolanter.png | Bin 0 -> 62967 bytes B4J/Files/logolanter2.bmp | Bin 0 -> 97958 bytes B4J/Files/logolanter_192x192.png | Bin 0 -> 13423 bytes B4J/Files/logolanternegro.bmp | Bin 0 -> 152682 bytes B4J/Files/logolanternegro.png | Bin 0 -> 64157 bytes B4J/Files/logolanternegro2.bmp | Bin 0 -> 95878 bytes B4J/Files/mesasItem.bjl | Bin 0 -> 3026 bytes B4J/Files/usuario.png | Bin 0 -> 17227 bytes B4J/Subs.bas | 1566 +++++++++++++++++++++++++++++ B4J/lanterna.b4j | 100 ++ B4J/lanterna.b4j.meta | 18 + B4J/lanterna.meta | 9 + B4XMainPage.bas | 681 +++++++++++++ B4i/Files/mainpage.bil | Bin 0 -> 3084 bytes B4i/lanterna.keymon.lat.b4i | 46 + B4i/lanterna.keymon.lat.b4i.meta | 9 + 27 files changed, 2725 insertions(+) create mode 100644 B4J/C_Principal.bas create mode 100644 B4J/DBRequestManager.bas create mode 100644 B4J/Files/MainPage.bjl create mode 100644 B4J/Files/candado.png create mode 100644 B4J/Files/engrane.png create mode 100644 B4J/Files/engrane_fondoblanco.png create mode 100644 B4J/Files/engranes.png create mode 100644 B4J/Files/errorLog.db create mode 100644 B4J/Files/kmt.db create mode 100644 B4J/Files/login.bjl create mode 100644 B4J/Files/logolanter.bmp create mode 100644 B4J/Files/logolanter.png create mode 100644 B4J/Files/logolanter2.bmp create mode 100644 B4J/Files/logolanter_192x192.png create mode 100644 B4J/Files/logolanternegro.bmp create mode 100644 B4J/Files/logolanternegro.png create mode 100644 B4J/Files/logolanternegro2.bmp create mode 100644 B4J/Files/mesasItem.bjl create mode 100644 B4J/Files/usuario.png create mode 100644 B4J/Subs.bas create mode 100644 B4J/lanterna.b4j create mode 100644 B4J/lanterna.b4j.meta create mode 100644 B4J/lanterna.meta create mode 100644 B4XMainPage.bas create mode 100644 B4i/Files/mainpage.bil create mode 100644 B4i/lanterna.keymon.lat.b4i create mode 100644 B4i/lanterna.keymon.lat.b4i.meta diff --git a/B4J/C_Principal.bas b/B4J/C_Principal.bas new file mode 100644 index 0000000..59265dd --- /dev/null +++ b/B4J/C_Principal.bas @@ -0,0 +1,24 @@ +B4J=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=10 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView 'ignore + Private xui As XUI 'ignore +End Sub + +'You can add more parameters here. +Public Sub Initialize As Object + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + 'load the layout to Root + +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. \ No newline at end of file diff --git a/B4J/DBRequestManager.bas b/B4J/DBRequestManager.bas new file mode 100644 index 0000000..9edfa1b --- /dev/null +++ b/B4J/DBRequestManager.bas @@ -0,0 +1,272 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=6.8 +@EndOfDesignText@ +'Class module +' Requiere RandomAccessFile, CompressStrings, ByteConverter y OkhttpUtils2 +Sub Class_Globals + Private mTarget As Object + Type DBResult (Tag As Object, Columns As Map, Rows As List) + Type DBCommand (Name As String, Parameters() As Object) + Private link As String + Private bc As ByteConverter + Private T_NULL = 0, T_STRING = 1, T_SHORT = 2, T_INT = 3, T_LONG = 4, T_FLOAT = 5 _ + ,T_DOUBLE = 6, T_BOOLEAN = 7, T_BLOB = 8 As Byte + Private VERSION As Float = 0.9 + Private tempArray(1) As Object + Dim jobTagAnterior As String = "" 'Mod por CHV - 211109 +End Sub + +'Target - The module that handles JobDone (usually Me). +'ConnectorLink - URL of the Java server. +Public Sub Initialize (Target As Object, ConnectorLink As String) + mTarget = Target + link = ConnectorLink +End Sub + +'Sends a query request. +'Command - Query name and parameters. +'Limit - Maximum rows to return or 0 for no limit. +'Tag - An object that will be returned in the result. +'Timeout - The http request timeout in ms, or 0 if default (30 secs) +Public Sub ExecuteQuery(Command As DBCommand, Limit As Int, Tag As Object, Timeout As Int) 'Mod por CHV, agregué el parametro Timeout - 211229 + Dim j As HttpJob + Dim ms As OutputStream + Dim out2 As OutputStream = StartJob(j,ms, Tag) + WriteObject(Command.Name, out2) + WriteInt(Limit, out2) + WriteList(Command.Parameters, out2) + out2.Close + j.PostBytes(link & "?method=query", ms.ToBytesArray) + If Timeout <> 0 Then j.GetRequest.Timeout = Timeout +End Sub + +'Executes a batch of (non-select) commands. +'ListOfCommands - List of the commands that will be executes. +'Tag - An object that will be returned in the result. +Public Sub ExecuteBatch(ListOfCommands As List, Tag As Object) + Dim j As HttpJob + Dim ms As OutputStream + Dim out2 As OutputStream = StartJob(j,ms, Tag) + WriteInt(ListOfCommands.Size, out2) + For Each Command As DBCommand In ListOfCommands + WriteObject(Command.Name, out2) + WriteList(Command.Parameters, out2) + Next + out2.Close + j.PostBytes(link & "?method=batch", ms.ToBytesArray) +End Sub + +'Similar to ExecuteBatch. Sends a single command. +Public Sub ExecuteCommand(Command As DBCommand, Tag As Object) + ExecuteBatch(Array As DBCommand(Command), Tag) +End Sub + +Private Sub StartJob(j As HttpJob, MemoryStream As OutputStream, Tag As Object) As OutputStream + j.Initialize("DBRequest", mTarget) + j.Tag = Tag + MemoryStream.InitializeToBytesArray(0) + Dim compress As CompressedStreams + Dim out As OutputStream = compress.WrapOutputStream(MemoryStream, "gzip") + WriteObject(VERSION, out) + Return out +End Sub + +Private Sub WriteList(Parameters As List, out As OutputStream) + Dim data() As Byte + If Parameters = Null Or Parameters.IsInitialized = False Then + Dim Parameters As List + Parameters.Initialize + End If + data = bc.IntsToBytes(Array As Int(Parameters.Size)) + out.WriteBytes(data, 0, data.Length) + For Each o As Object In Parameters + WriteObject(o, out) + Next +End Sub + +Private Sub WriteObject(o As Object, out As OutputStream) + Dim data() As Byte + tempArray(0) = o + If tempArray(0) = Null Then + out.WriteBytes(Array As Byte(T_NULL), 0, 1) + Else If tempArray(0) Is Short Then + out.WriteBytes(Array As Byte(T_SHORT), 0, 1) + data = bc.ShortsToBytes(Array As Short(o)) + Else If tempArray(0) Is Int Then + out.WriteBytes(Array As Byte(T_INT), 0, 1) + data = bc.IntsToBytes(Array As Int(o)) + Else If tempArray(0) Is Float Then + out.WriteBytes(Array As Byte(T_FLOAT), 0, 1) + data = bc.FloatsToBytes(Array As Float(o)) + Else If tempArray(0) Is Double Then + out.WriteBytes(Array As Byte(T_DOUBLE), 0, 1) + data = bc.DoublesToBytes(Array As Double(o)) + Else If tempArray(0) Is Long Then + out.WriteBytes(Array As Byte(T_LONG), 0, 1) + data = bc.LongsToBytes(Array As Long(o)) + Else If tempArray(0) Is Boolean Then + out.WriteBytes(Array As Byte(T_BOOLEAN), 0, 1) + Dim b As Boolean = 0 + Dim data(1) As Byte + If b Then data(0) = 1 Else data(0) = 0 + Else If GetType(tempArray(0)) = "[B" Then + data = o + out.WriteBytes(Array As Byte(T_BLOB), 0, 1) + WriteInt(data.Length, out) + Else 'If o Is String Then (treat all other values as string) + out.WriteBytes(Array As Byte(T_STRING), 0, 1) + data = bc.StringToBytes(o, "UTF8") + WriteInt(data.Length, out) + End If + If data.Length > 0 Then out.WriteBytes(data, 0, data.Length) +End Sub + +Private Sub ReadObject(In As InputStream) As Object + Dim data(1) As Byte + In.ReadBytes(data, 0, 1) + Select data(0) + Case T_NULL + Return Null + Case T_SHORT + Dim data(2) As Byte + Return bc.ShortsFromBytes(ReadBytesFully(In, data, data.Length))(0) + Case T_INT + Dim data(4) As Byte + Return bc.IntsFromBytes(ReadBytesFully(In, data, data.Length))(0) + Case T_LONG + Dim data(8) As Byte + Return bc.LongsFromBytes(ReadBytesFully(In, data, data.Length))(0) + Case T_FLOAT + Dim data(4) As Byte + Return bc.FloatsFromBytes(ReadBytesFully(In, data, data.Length))(0) + Case T_DOUBLE + Dim data(8) As Byte + Return bc.DoublesFromBytes(ReadBytesFully(In, data, data.Length))(0) + Case T_BOOLEAN + Dim b As Byte = ReadByte(In) + Return b = 1 + Case T_BLOB + Dim len As Int = ReadInt(In) + Dim data(len) As Byte + Return ReadBytesFully(In, data, data.Length) + Case Else + Dim len As Int = ReadInt(In) + Dim data(len) As Byte + ReadBytesFully(In, data, data.Length) + Return BytesToString(data, 0, data.Length, "UTF8") + End Select +End Sub + +Private Sub ReadBytesFully(In As InputStream, Data() As Byte, Len As Int) As Byte() + Dim count = 0, read As Int + Do While count < Len And read > -1 + read = In.ReadBytes(Data, count, Len - count) + count = count + read + Loop + Return Data +End Sub + +Private Sub WriteInt(i As Int, out As OutputStream) + Dim data() As Byte + data = bc.IntsToBytes(Array As Int(i)) + out.WriteBytes(data, 0, data.Length) +End Sub + +Private Sub ReadInt(In As InputStream) As Int + Dim data(4) As Byte + Return bc.IntsFromBytes(ReadBytesFully(In, data, data.Length))(0) +End Sub + +Private Sub ReadByte(In As InputStream) As Byte + Dim data(1) As Byte + In.ReadBytes(data, 0, 1) + Return data(0) +End Sub + +'Handles the Job result and returns a DBResult. +Public Sub HandleJob(Job As HttpJob) As DBResult + Dim start As Long = DateTime.Now 'ignore + Dim In As InputStream = Job.GetInputStream + Dim cs As CompressedStreams + In = cs.WrapInputStream(In, "gzip") + Dim serverVersion As Float = ReadObject(In) 'ignore + Dim method As String = ReadObject(In) + Dim table As DBResult + table.Initialize + table.Columns.Initialize + table.rows.Initialize + table.Tag = Job.Tag + If jobTagAnterior <> Job.Tag Then Log("HandleJob: '"&Job.Tag&"'") 'Mod por CHV - 211109 + jobTagAnterior = Job.Tag 'Mod por CHV - 211109 + If method = "query" Then + Dim numberOfColumns As Int = ReadInt(In) + For i = 0 To numberOfColumns - 1 + table.Columns.Put(ReadObject(In), i) + Next + Do While ReadByte(In) = 1 + Dim rowObjects(numberOfColumns) As Object + table.rows.Add(rowObjects) + For col = 0 To numberOfColumns - 1 + Dim o As Object = ReadObject(In) + rowObjects(col) = o + Next + Loop + Else If method = "batch" Then + table.Columns.Put("AffectedRows", 0) + Dim rows As Int = ReadInt(In) + For i = 0 To rows - 1 + table.rows.Add(Array As Object(ReadInt(In))) + Next + End If + In.Close +' Log("HandleJob: " & (DateTime.Now - start))'Comentado por CHV - 211112 + Return table +End Sub +'Reads a file and returns the file as a bytes array. +Public Sub FileToBytes(Dir As String, FileName As String) As Byte() + Dim out As OutputStream + out.InitializeToBytesArray(0) + Dim In As InputStream = File.OpenInput(Dir, FileName) + File.Copy2(In, out) + out.Close + Return out.ToBytesArray +End Sub +'Converts an image to a bytes array (for BLOB fields). +'Public Sub ImageToBytes(Image As Bitmap) As Byte() +' Dim out As OutputStream +' out.InitializeToBytesArray(0) +' Image.WriteToStream(out, 100, "JPEG") +' out.Close +' Return out.ToBytesArray +'End Sub +''Converts a bytes array to an image (for BLOB fields). +'Public Sub BytesToImage(bytes() As Byte) As Bitmap +' Dim In As InputStream +' In.InitializeFromBytesArray(bytes, 0, bytes.Length) +' Dim bmp As Bitmap +' bmp.Initialize2(In) +' Return bmp +'End Sub +'Prints the table to the logs. +Public Sub PrintTable(Table As DBResult) + Log("Tag: " & Table.Tag & ", Columns: " & Table.Columns.Size & ", Rows: " & Table.Rows.Size) + Dim sb As StringBuilder + sb.Initialize + For Each col In Table.Columns.Keys + sb.Append(col).Append(TAB) + Next + Log(sb.ToString) + For Each row() As Object In Table.Rows + Dim sb As StringBuilder + sb.Initialize + For Each record As Object In row + sb.Append(record).Append(TAB) + Next +' ToastMessageShow(sb.ToString, True) + Next +End Sub + + \ No newline at end of file diff --git a/B4J/Files/MainPage.bjl b/B4J/Files/MainPage.bjl new file mode 100644 index 0000000000000000000000000000000000000000..405b3b756ed703481ce30bdf2802b885d8384a70 GIT binary patch literal 1959 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 AE&u=k literal 0 HcmV?d00001 diff --git a/B4J/Files/engrane.png b/B4J/Files/engrane.png new file mode 100644 index 0000000000000000000000000000000000000000..8b45d096e6ed65fcc6e81844a84fdafd91fa3353 GIT binary patch literal 1860 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.=fr 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 Sxj;dCv7MDYA~hbN@c#qnV7X8L literal 0 HcmV?d00001 diff --git a/B4J/Files/logolanter.bmp b/B4J/Files/logolanter.bmp new file mode 100644 index 0000000000000000000000000000000000000000..2e75e5a0d1f27d2e79761f2104f3f4e0401cef67 GIT binary patch literal 150454 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 H2sHVBVsUz3 literal 0 HcmV?d00001 diff --git a/B4J/Files/logolanter.png b/B4J/Files/logolanter.png new file mode 100644 index 0000000000000000000000000000000000000000..b9479ed6c9e5ec64c4e1cbecd936e95b6b714575 GIT binary patch literal 62967 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℞_r^%^UodBVh4>Xsfu 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 RVgCRC002ovPDHLkV1nxu?VSJs literal 0 HcmV?d00001 diff --git a/B4J/Files/logolanternegro.bmp b/B4J/Files/logolanternegro.bmp new file mode 100644 index 0000000000000000000000000000000000000000..770e1d4569479de21e5b0581d48022d9c0563be2 GIT binary patch literal 152682 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 TrO;H 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

*~V6Jqw!bLz?40}nhHVLPDY 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 literal 0 HcmV?d00001 diff --git a/B4J/Files/mesasItem.bjl b/B4J/Files/mesasItem.bjl new file mode 100644 index 0000000000000000000000000000000000000000..70486cac35714b741da14575edebd57099a81956 GIT binary patch literal 3026 zcmd5+%W@k<6m4TkWOyWj@Foxuf^mo~91>pPVLOr>E0z_+ zDil?0_yyRfSn~;4Kya~O!77_jd;m+TScr4(c*eFILlG#7sp{LOdv4#?x!qZ%)czr* z9>Ba0!@_V^Oc?2CEqoY@LRB}6dpXeEt_iZ(koEnd)-j=8&H&D9$ID|bENIVc>K-fl zUNbO}*|tYrE+53)UE%St5}6LS`5_Kk^0H$`?T7HU=?Cz#sBLF0WPWy_d%EG85#Yg4N}K-* zVk}vayB!`CT6C zvCcHuHqL50;z2~&Z2N)Oh#?ivTygA>Z8@=56R@47EUsCXkOz93Uc$Dv{azkukh@Fr z=Um{}HNO=2UAp&MtGQ^PW_cXwuZMLXf)?L?_@oE>1+}UKK zeqmvyTAr!XeAD+LP&seBwKy-=>5@8@v38+WW?Zh^UAg)#sNbzNGuUTd`=NgJbcM^! zhk=F~zH5^so@Ou6XsJ9iy;Q9y+n3;zi8~QOZ89<{PxnmdcMMbN=*WO!w}ObnXJ}yH zj&2o~E}0Y);w;6Z&&c=Py3?i49-g>5{*mpIR7{^i?kIJAav5(E2R|!$t1NaS?Ze#l zNfMIlQ^Y&*n?+CZx>8qJG)^-XA6+Jv>;L*&pV!`EUi>mFoA^BdkR3V*Y4I{WN^l5* zH&?*p0NJ4@xTN_f2}lTA!eUvTCE$_633!g+d59wz*`Yk-@Cy*)@Mr>FB={EMSOQ*3 zevKpmv&y^-F+57arF9%a(&KWVGW~x4Z&n5;c2?#USe1fqtIP@PrIkseOyf?ABT3p& zmMZbo&ML8PV;FHF<3N%Ki&wx9x34B(A_n>ClK?{cYXDM1%qo+XTPjMgY1!hsrv=XA z-(Cbv!Js6v0Hrjw)Dkv#5pW8768C9<*Dvc= zd5h=YhS)~Q87xyu-bu~93na0<2k<^dR!u@$QxMY_^gewSB8!2bix3i8nz|H&-6pIu z#gx@jqAc_>0_lD7yv1r6D~aGAvO1GEI|m^2&n7!Z0fuadl%{QjbH9R-Re8vmc0L4h z2(yy5_z^%d{S(@$oH-8>GxfiqeGcK=8|_p7677uOzoQ)w_r2488=>x`oy{S%v%%Ar OPumEaa*y{GO8o)q*|A6f literal 0 HcmV?d00001 diff --git a/B4J/Files/usuario.png b/B4J/Files/usuario.png new file mode 100644 index 0000000000000000000000000000000000000000..2935f41a7b156661e9224766883c83c25d88dc25 GIT binary patch literal 17227 zcmX7vbyV9;v&Vx&ix>Aou;LEI3n@;6ySux)y9Fs)DDLj=?(P(KC|>;LdG8-NIVaiO z?9T2^X6F0(MS$fc&^{1-0001JQj+3|004{>^d*Ok2>m36II9!-M(7MucUH19b#^mw zGy#Yj+ZmcrNZA;enJAhV7<)L3m-_E7PMU~xG&$2$oYcKd5O!+uZJ%8?(Au`zR zl?M!nkZ1{zz^#bv0Zphs!`+Fb;Y$V2<90S zKD%z|`E5PEPw^22<)|c$aa+8;JQJ;5?x^^G^}-MZOT!??fAa?>Q4?5}{S|Un`)B7* z3orRi5Frj|aK$g8VwBa=I9 zx<8OJ6+BNVQuM^bw71nj0EqF_3vCfib8@EAE?7IbbjkZcl7k}oO(WEh;7qx4`rXr3 z=lo>Qtx#v8Blx+6Ud`xd@E_{yD+}he!;Ntyz0=tH+K1%cCwE! zvo?&J2=*v|pdp-heeWgG>U2(ZvtvAH>-%LJaYxxN+pWQ)l*gv=b!V(O8rs)v9_G&Q zW2MBguIY9|CyA*cPv6UHAG6NxGq@^7!KrTn8qaztZ^!XSb7Gt4q6e1F?>Pt6L1IyZ zoe8-P(y*hho#@ZH*5U8B;(b)?|#feTqc1@eR=4;7>alV&`_Y=oLZfD3er5;cU$vCrV%{>)-w*CfQWo<*)XaUn$wkBW|ko(}CQI9a=E@){`@S4q^TtUY2Z1a7=VYL1Ydk;`o14!i;9}XUtU5GuqFpAj4_$)YCiX8z^~6IfWTu7O87I zC3H+jm@??hSzE14K-ew$4bj7Ngg0Nc5#dk;B0+6b?6cI2I;eEGIO&G^uq43ho4Ri3 zJLVz;HMs@3jBGkx>?g*bIV~C52MlDaT`4T5ZQlze|RzAPu}15wI-zvRq%vflh5y!xt*xKp!?2)4a)JK31MKuf1*McK3d z`pLji$!}si0D%%<{ABlsA|uO5Y~xzF#ShucVL@7vS@ej*(nYHMWoqc$(3SITn+LT7 zmfXWS4NR%{1{2oo1_+Es#f?(;v*H+Web7mTc3Q@&V)0~&`had0DBaG$Y2_Fr%1Af} z9MVvzRk_Z=$p!c2MOeu{cJH-{POISADr&b!_zgT4t>-Xrke{*jq<30S0qG7iDP9%+ zr)qd0$A_V`FSrI5e<^PlaEi8x>Moh-W9yVc@F!Z|7DjekbkKM;vDG7YQwy}m$V*%2+Dn+3hTMH8HiKX$yV z014CFtJq~3f3dWn;~^;=j~dYje6Et8!VmF!xIB#Kelc0>wkG|%heV7SzNncR2{Ejt3#LYU1b2~zwHTTM;Q}-(0>FXjeUjMypUVd z%RWEZjcl4{T>Go%5_dG;H`0hfMtnDc;dQaFccw0L0ahWii)|4NwPu->W@<`aiWMGS z$Zd;DLrmyBx!3EZpyl_x! z{AwP0bh5N!oZC3?abfw-fU0EXDw{zeff&-Tg&Iqp?4G0EoN5bZ)Yau29tpJUfpAIw z#!Y!#OkZn)21$q9*5hdGi)nKUZ$sKH3a>_+9C2T7KGn5sY&KcN1R)h#k1J*lz^TJR zHjsc!YTsv8gLW2-)`SC&gTQ*?bEGnB!hP#O61qegJa6vB#_cpP1?3@<(c1uOiWR{J zUVf$5d^fuc{E8yXir?^{zX&XW!a^>b?d9DvB>C>uH^BwOKL1mF89?f$GI{? zWX-~CYbD<>BkuR;ea>u6yIw})zT=HQfB!Hj1cJxN7=Q!ALTq5J>%G?hv`7qI6r_-y zcm(Ib%HR3Ocv{N{`*ldn9*?h?sxE=kvX zF%GoE(r_l=SZuoD2x;-&98c73&EOybW##NH24?!Z58a}Qu#z2ERoSdOI?h~?9N(OB}z(3#e#lf}k3F~qbj*O(J#t?%uJU4`0I=i(h zsp`mYyJfWNu2Th%(mlp0$pufag3YOt{U%-+)=|tQ?2xEQ?(BuKbZJ^7s&s2$O?WhV zWoJv4bi(g9jC69Da>EA`yri_yeAIa8C7#T=Cv%zuX|cT_i^^z{6}@bhc?n897Mc2Z zWGV)m;LvfXO^+}F#XfMh2_CxB^GQYvf5UW}!1>UbSKnFp&``455=ShPv!_F?2XkmZ zZ%dd^5*RB4@V{O2Di+y=x!wx3ZQq_986rcV_$=uxyU8WG^!-h&%i*o0&PuN&dQEuO z$7`K`u-&MiKa^Nvlix9>?-o7J;pptv6X~m6FV3@Q!M8yGfW27%vJiIS$nTL#8x0dD z7rL=&LR@JK=Z}jEt!3vtR!;&*!ZZMIR0g=IuCC!n-LAj!EZ|tJ+U4F4dc}kVyl=XO zZ~>xh#+}dXrkPEj)t(l48hH!(vss9%KIRyIen^(4qT^trAza+alamvQ{=f}iAuGDi z|E_u*wM#ouv^+~-VjsR>x4@XCtk$W7F+wLYOYrf_GG@J_!hW0m+ywk6i z@6Fn3A$C$psPQn#8B#G4wtsNWMc^#2g16;KYL{T}5gmi<#t%Y&NDWRSvPnrRDd5@w zfF0P%(3*0TUOScfZ(r$fUT9EWts`iZhg9s$d4FvWeJ8pHsAAWDzS$y47T*Mj$EryoTIJmUz_3zE@ZZq zS@TXAq=1n`J~6m;U6g-$d0DwzYgrcj60s@z!maK!_jr9**4zj)QV9boT_y+$>}@ z6>@s{iMOcUg#$bK8HMhVZL~j#oy$QBMY8@;1iY2!_BJuAHh4I0MpV<*uc;MW`tA1M z(3{p%Zd9393c4`JIi1z%;G0pOLhOfF$JD3|c8L<&4FwwLz1EdXk2=qi_oG1rpoqRA zQR_r4ussVaOPqfs_9rp9W|Qs|lth$H;RF{}*ykZdspyxfAxp;|Y35ti)(<{SkG@v zw6pkDNlB?=Qq{;SB1&qqx*ZJ?SCgZ`Q!6{$9N4uQg^A-+a>YqfwPyG#uucj{Zk0ppC9^lB`MDGPH&8v&B3|Uklbx1l_ z<>ap%X>Ls)3c9RZE4SOZhv=lj(=M}&3(dldY+36wd3c~n*^@foLj?5RaOXnMM33=w z`dailZRNJdpUA5hH>J|@lv_qR{n;&yAfmqy5`U?55hYtAkA@y;F0yp|4cu9MvXfjl z2KN&hR@jJ+sste-LUN-7_>?+SGcw!pLx_+^V*|g*zh+)BB|ALp$O=-Kg@;THAGc(j zF#rp8adNs>746VR_Xyjnx1xd4IdsB_8Z&$c|`o>kG#lC?XK}*fg z_jeh1lhuvYe;ad_%hJuzAxyjRGOzIuvm<@HKzI`^=a{($UE&(Q67G|BF+hIlDrsx| zs%7iQFEK^#^XY|^zC1S@F<~G)TKJJB`Qviq_H5D}e`W@WO7n;}GEj{)={0)IyKSm~ z%55{i4ILgW{wRHkrNv&y!R9qcc9WlPymu-4OzP}{9$3JZ!Pd2b6qwWVN$0r%>kz+V z7Z!zX;BmtzVnZ;xGC#djQW;s>GgecOCAT3ryr}4z z&{EV!7dCcFm|^qCZLCxzvm-RE^1eK_78?(xpbOu)GdTQWHLO7!0PMOqo-*4l{|Yo= zTVq?VLfvvb#rgj+$XZ_)w?nuV<;ojK={_W_S`J?54%)ncA2iMO?|BE*Y9gqXlb#Ryhw`+b2*uIwj1Tm?iRaCEbyDh z*^Tj^4T?Uy^B0LWZRs5EvU%-M1{tCO`20&RJpxvcbPX2Y)LuSz3*CnLF~o3hKKJq3 z1^LMYJq`}wv&pKFGR|22C|Cb?t>$O-RPpkY=CE&tp;QqNsgt8R7=`C1dPsl6oCKG@TNwNTVmdqj35UrH3Qfvg z$2uz5CpLuUot0*sL3iL(eA2eKleh8pmrRYG+&!t$-4*St5f{h``{@+B*T7UWIgH$3 z-%HrbdLrYI#om6;4h2$xNLL0~CgqiB`UI||0S2XHYc<@My3VQtlXQ4fpuw@Iq-Rs0rdrO!Tq&jUaE8EW zyD;N5Z^<9^56O#dPx%EeWvBhCRn{7lk@Dqdde~W~1oGc0 zs$IjVfW=wQy+{ z%^yMGK83pB{&iES%f#c5%4X>34;x$(p+lmYj*#->U{nS)2|XnKTjoSj?y&WdXcBEv zdqY0odwtz1CW`tFD?~1kvU*22`n`WKV&k@~t_=hofofo-Lx0gzKK-0y1Jx)CJRbRcc?4l)a&!r`=*=0Gupf^?iOAb%w zqXOBkBd)4wJ~fp1q&wNt)qr$t=S*og2?woI9WkeRKOKI%1BdZSsV4JHMwRg0Xc$D| zi3h7k{?g_|rTih1p<`@qwg>)=Tn*m7=Qv-VeDn7C@Fj#r&0!5|l7u3|k&u}=I4u(7j9!0{AS{{e6L-s=mtdRr6GjiM&iiP@`YFT@V zH|~=y)Lr|n^yOcF=_+go5jEy{a+5*UT72zli+(WtC}&ktF-bu%zeW(J5e{ zN7?Nl2_vn-0M5^|CWb^dX7h*IzR0yZ(&NP}fJB2d?PjMpL2+!QxDme?JZa~cJhRI3 zCQZ;VOV{&9_5>4a)&jmdKx8I%Ps^4(m50#7E#g+$w1Evz`5*@}tIR`GYPC02GCM6{ z1=5BsW*F-ChSC}VRVR<4c;m`R+utoMU{BD(S#gad5#5hD`wxPP#qv=F9@}kKh>~1% zRb~rpW{JI0r9@+EmPnQ#A-SZW9vX&tZ<=ef+2&U7%psD)7O@ePJpY^f?=ZAQ_DMU- z`Lm!=$_MEzV{r9~blGc;exfgJ8a4h(Y({XRY*Qetyvew)8LCM7XNR`ah4UPJr;q7F zP#c%Wep$}rP$qU@#>+`Hno+q>PvGYU4(MPWE-p+y*j9b-q1mYY zwMG0YmGvhjn+_rB#nll#$2f|>_;B4tbyJ4{0O?XuY0+BGCumUyrxY zf~lJ7208mk90H^p!$tdZPl{jBQGia2t$OT9K{XU5%U|yMiY?8$rM@$gr-ZnO=KX?8 z0gnY{wEv=f_`#rUJWrGu9Wvf+u_X1>bu{1NJKqVvn{bR5GX&y^x0?h2dEC6oa`q%_ zhwPU;6TH&1bYUb9Xa+WLxbPIZHBf-ZJugIqly#Ss7K|((`{-{;D2J%GY3i_Bwnj9g zcwUx5|Ina8TSBA9d^=6?3 zoEB^55QsQnlS-RAYVmRsPpy`Yh)r45_^H^L(X*wD$cN=RZJxcLGS{hbn|cr?fzP1R4E^GD_pNKCqnNoZSM zgjaamKi}7b#WotW_Z_sC!Z%#KOe$=PKc#K?I?{`ZdUTsXFU$Fn`lHGg z?-UIAn}(;JooVcG6Ko7}4vqn#Rl#+$JY?Z!a-lx=gQj0?LGjf-BX4!_p+DQbbp!#Z zyflU}PG)rQbKd=)>2G<(#i!j@w-OHoA)C6wVv}h^7>I@L2Xw{uLb9^*Os~Rzsn8gi z(Z#fAXUL2D-a2_898#WpB}B@1s&O3@EENX0?YlsCBd1w$CJdWe6w zJlA>sH6Ng6v|n^my!FAjda-7>T7yRbUn?u$TVS>Wb)s=aB{R8gj+dM8&>`=VXDwlE zlFtf(pme8ka?eUO^sAJw!1e3D`iaUN#$VcR>tZEdx(;L*tbdTof=jX^LY#jxlT+VnPEELT$@WJdFh z#GaM@d;0nLCr8(%BB8y4mBk3*#Bt6npm{RX7@K$Ty(wjKKlYggTTkm-g0?H|-_hb1 znNEm@*fH^`6Mc}HR3pf(7;%m8uzt9zODsqEH+d%Xa8D*rS%*w!K?!SNc8d7hWs{5x z@o+C?Cdc1HAwVZC*9Z@U^kF2>F8@W`ofGH5Pat^KD1rlhWzs2_9kWT$)gxZJFI~&K z|EPlFkrMxR2(hpAH8$@^4_3@Vj7=Aysdld9~1O2WO@gV@6>URtwc`<9i%b znn0}(4l0Sr(u+QCE>>rM52z5-$^ZF=_d3xG0(vsvX6E!Hb}bLYdxcUuo(9&8`(nu1sG|)ay&z>;kQokGGB`qLh%xE)?Bl+t7Wxp zmN*zRE7AOezh&k#x{kTZ&5u_%pKo{(6OH^%_Gh2Q-g9MnC-W3m7)Y=kz|e03-!}O+ zV03J6xv~#J%MAfX9R~z&x8j5pCb;K?suWHmY|<$bR-6zc5~L4+CetY%A8;j(?(O?s zZgU;P0G4h{-VxG*Nc;&vpjvNXNf)R2XUFCrF!UeK+Wef}4`*Vu|KdOZu;0)8Yb*a~ z`Vi3_vRR3CTDysnEiyI;ZDnsBGA}F>7ec1A{@vZ2RrpZDDuBkBX#`Bm*JNukhKLM_ z@SIvadz9ezTx#rW<$hYbB{-_dDZ>BYln71ANDxQ{BHfg3(X&#*hhae$dz1VxHKV$H z*PJ9>$HIunk)B=Eizd^~12)Dk{M~z;@=Q1nXp%WZo##}()EQ3%YGoo~vHpXkYO{*) zXpJNr6Fe8CgP%f@P6=U?PrW9mb`6=}^P$}}rZot5W*u zjBKz}8c-iE=UF09=o|na17iw*Y$p39fxGCIj~Fk?qEe&^sTT>~!}vHK(4@t=t|OFr60K)zp#DDf6y!kd694-Qfd zRnZb3z+Z-dK^=`XlzjD!kz<_H36vaid` z9kn&7zRlJ1Z`mFaU=!M~kt%t3w4~fYY9prP(A)|CVZA(u!&$s?4LGCJqn25xLMn4D zqLx?HdVDl=U_l$@2Xsfm;;)k{eXAo0N1Ll7sAlv-_wh@?!g@W_!WA}rxoF0fF?*xVf zDmj73NuX%-CKJ{n$7?Q~hvk?mz!4#rP3EiH`B@2E0a-lLZW0ZpD>ul<23j#)T`(u@ zpUNMa{=?_C+k(`_F&lk)%=@>Zb<<-?%YEtBl)f zGAB7+h2drBl%|u|z+xY#0dS7fS~`Ikh_IVGMVD4qPbT)2Fr&&r3W?1lcyGVcyrC-h z08(qS#V%uX6_bzpG8&H$o5PM z?P2*>nYEeSRnAXr>B4Z6?>ZT3FLiB-w0v<&8L|qe((B<83+u-^dP78!4B)oISlz_r zdxLL+k|?pJE^|_bBOCB#?$4J)mN-RG8S9ukE@oF5lLjPU<_X6qpUisa;eB+Pma1Um zIpME22$`e75vo@abEU8%_ee>%tJ7BS)QmnMb>nDk;g#&RP^p>y+zggl!WoA7!X49J zmY43BOZqtlU*l5^quRm`WC~~8%374vR!AxHATW`}(mmFREl$v07|)Sc1#%|F&=BqueIm! z;e59d4~1_TCSddW*Qixfqk4kub)f?l84ajEG)S$gzG}DaOkYvrjy>Pf$1i-SokfwMVY74|LL~YP!7} zH%c`w)tWwrZlKNn$P6(J)Bhd0$)IkCZp*&CIAfH0QC+JK03jVqcIrx7d}f9?W7>$k zh8a8Gu7!SDXj<;5V5s_B?@1ZzA@7*5o8kD95N5@K8bF61vGMX$ zq`!Z|>QZY1KaWPMVcfbe#%|3BaZ7x$k@*Nt#J$_O7qxna$=nwzX}`g09*%Av;jN;s z|4JE(Vg!-Ju1Q0U|MFiXXo1d;OuHgHBgAMRy@sfx;hLym)T;n(*(yIAyL-flcBj8L}bV@fraa4{nO;Of>TEiGd&pKAx<5-*+ zrA-?c7TarRl9U60j076bJA;}>-cr#fOk6f*EEzooW)0Xh{WXc`JA|vZgl-WhUCD)B zdxO)sMwI5Q0+koNu-e*-b&O{Qh%_29Y6v)NwL@`7pW#RTI>mMl@6n%dMR>~nz9@tG zPx6K=*8svzSn-<41@vC2dm&13t}8gmaS*Vhkf8OXBhmU+^7QZu(~ z&6=EO)a$)BG@`Vm*pl{#gDyTnESa7RS=)HJuKxB%4c-qw2??8C$uqyE_~G3&d68rF z1{X|2%8Hi|#nc2lQ&Lpl`94R?H1;Y)ZvDiwHGURq4-h>h8$1uU;TVU81wd*%2)^6x z>bH$gY*AK}KO5e{!Pb5OQGd{FSfYkE*1|DyPjmLZU&!lf6^|*jRc0A)cf^-ojU0g7 zsL}T2_7+HNFeu$TnZ=Q-(CTp-h`nsaGV>?q2Qr3FTu*ZoxxEM-hy!!#2cUs8ep;)8 zHhh6Ix4d(9eo=|h<7K~vOh7ADrdfL<`0y|-b%AcRIy~Iw83!O>GI}4 zFzas#_Lj(UTchPt31&wYVKVyf=321B>M{lNyWCdMGL(*D;O6RNyTDvm6=6cGhI4`( z)Q#Oji!#u}@8bx6AiOBOq!C%!_#B8>Lq#h%4_SHdf&%EH@YwSvIv1Wz$j=E zFq-T`O9+@%<&{j!i#`Wt=<{i_A8`I8?QVt+F%r8fvzrjJKa&cOb})@$wB^CI+c|6N zIHTi|SPOBGLJowWjqG1Z(o$M#$#!;!tf2!l(!Zd|tObRLK}-I%;R-FKLSt;>u^y6c z3eif<8W;HK0>8W#J$6}Dzl2fHC0swZV30Omn~+1ioey;K3jn|^+L8SD=r5a$AlrM` zb?6+VToOzxO74bK#I098Z$$Ag!s2^ZF4;uOe8WtV#ma!HzjPnTgX)8y4X;AC6xdw1 zX#fQrwfX`oYYoH|BGBYcx*upb2ObGC?q*Iis)q-UrjPzy!EZULbVp5&R!Se!{fz`C zikXyI+_AQGTQ>7VWpz`7W6SO=H-abmWso{!^hkH_jcAY>x*$AY_HP6xbdJYbbJy`= zCho)`OBh4#_4{|T%Yd_Qd(bMggM!x#FVPNVUv8tb0AxV@i(GKQd(?mY1y&1m0L^*s z6HWSl&?2A6qS(4|qGy(DR!e>?f2btB{XNs=)0hL4|b5!fEgNLIdN*uJ7>Q1hOfed7Zt>>p;cRm z^B^e=6+izPMHc5wodZ2ZCY6q9-KJ1`^yKO&g(S|Xm~9fGl7p>nz_gbB*=lDzjO3Cw5=moOD!8mpXt6-jUcp6afFS1XQo`j&6#|?SI@jV9SBeo@1BvwtGF4Z1|T`L(@fJHW7#H!Ql#?hM~OZr2jK zU)fGVYlaIFlTqe0M~VhNh?7eXT01bSP2j7ae%LcCuSC&XI~PAs<{jylLzJj=K%G(G zEqfDv4s^k&ShtF<64GJ6>rL~O{+L#=eYe#z$!Y}=eW#DiP}AP@KQKiN>*w{W?-3N8@q9ywey14+)h@*;he|&h$##CEyd)dYT1d?w zZYZ22s|y-Bp2+Wph@NV=>%g!I9VzS77a`J((ff5H(mG6zN6JGD`&@}UE)RnF^ zzGUM!IS4io*aP`vk=fJ}R>aMhVD67d;rtOq9(wAg+DrY2PGY2*>G^ zdwiyU#@VmHNJ~XLe)K{M#mv);19{CaYz((dJI3LnPRT2 z5RRxB*#tP12qO4+b;QozZXyz>ZGmRh_vUBT-H4cH6`LgqfkBr)i6vNL>9vyEPvdbm z^3}Tu=`&T{G28AtvO_b@vXCM0V+Ea^9rkHD&QbG14e$e}Y=g^2_-S5GdiPF733&X1 zc=UMI#tIqaQObDMt%xJ3wzF~T)+MtYR%cERRbnbte%Za8p=Rg80P{u^5RuHCRzc-* zw1%t?wu?LC+xAdN?(2_o4|(n_0o@&d22QSPM38ZV4*m+7B>SQOTv3VtoPA=Kjb8PI zQff#dDgqNL{8SDuqTyJ@5BR^xb6XQ6SNL!jtMHF*YKgzY}MQ{@JkRTe2F-DEhioyG^#IG zSi)1k>BVi2LZxgN2VGlzFHIjZ5>>pMy@6c#^eOqd_wbr8HdN{Fn<5AHibwx-zcRvz zr>5C@t)_8^Raso8BQvAEcJJfK5+EGeT&HBs;NB+`G!e2CeCX9$*1!s+NDD{1uk&J{ zLfGXh+!V{mwo$?bjEE^RPS-P*6Yo>D9RrP8MzmG3Csb~yem43czItN9bHVi+!PXem z>%WM&)wc#yaUoDJ1h$=}N1c5D8nuq>|L})WQnn9&5`LQN;{{UCVX}$7k0iAGhFswx zaj$$$@Sd+kuF=xwucg9Yv7seApvf5gG;u8JY5txb)n+pGY`uZE8=e z|2p{$5Q__%kL{>(ouVMzp$UQ_gtYVRKO&dLTkqYEjp%knF#8E=x_5g;E7kKH6I4L! zmD0JcO1NIs%#K`{`A0N5H016Ta!@E~#rH9pJXttw8BH{Z(a`_7LoLdvXq=o~sz(iG zC=wvCpq{@L5q0(jh-*8GwQfA88b|f-y zWx6n-nw-#0h|*@F9chy?;g81{39Oldl4+o`(43x_mHAI;WhXbXy5%SU4Xkw|5R8<@ z+Ek>D@zQ5{heQDi5cuhb?}_@`6js}3WVQ^M%-UidqZtHZEqyteaoZ(OWnm(!Qz8@h zYSc!yj`yD)#VXgzAd2FyT&s?k?w}M()3HIyF>KlrqA2JFXyZzTHcP2IcrQe4JUel{ zmT{7z$Q@uN+01ZV{19Yp?6;l~iC8#|?3Ws}CDDtB(&nNioWTa#pl1pEdS!WCC%3vg`MZ5)>i4X9;j%XqdvKi;6$tR)T1 zIg6+~hw^0=R~k;_R_9^mDDivS>Uf>#aK;i$!cYc5Tqd5Ed`@^gots~qT}WlsmwXj^ zE{t-m(ksue5?g*cOO(|dX>fg^9r+=bG;mhgGOWudMdJW5#4>9c7j_+8x5`xiCu51$ z{SS&(h`sILa+V!P9uGa%3K91L$YM>lRT-Cy@fKWK_bJs#A=rUsk-T!RV5K2P{wydY z$395=nT|NuO5@p2n0M3s!GU^7_>$6tchs=aI<}E2$f$_9_NP1q#R$H1fBC1d6pg7< zcDZoJGl2~vyeL%OTB^Qt^V74478@=6GWKPK9iKiUn<;9=mWRA+F)9(b5}4A-t$xE@ z{{k&@L?_dp$>7me2&Z|!%&=MSz>6M#x)Z~*YhOv{P4G&vdcc}9`a>WSL$#a|ur*!Q z|C)(B)@|RyIEYsh;S904mFFI~NXV@b)|+|Hb$^yn7!Jruim23Rb(Q#V(8Ud)Z`(9M zNKYO-tHiZ>!fgUchT=K|{`g?|@kz_5@gEP}o(R|z2gmZ-E*ag^^bifNvo#Ji-UKH8 zrE{f}6mw(2omns_zgMmlZ)s21U{p!sM$f+U;Y9aI8M+;hxmL*^xS;r%8r68b`ULaG z?me@`VeS03bmrPadG_yTsts^S|IvDjZugy`kv#C!P{`%$)~43p2d>g&A4}|qVe*}` z^kSd-HuPcN0UInxbV%Hfr|d7LI{a)d0uNUwMn9NychE#faC9;nhJMx4#O>=^b4Hh? z4-5zmJ4(*0#)#D}M6dWj&&wHJ5gnJ!KO^@Xk_?`At7D}HCc_g-cxoAEIcDDzp;F`b zDA@Q~j};gkd}5@nYpM*5-P4>_bqQlOqC{>4>pe{fXmtgRISQ8qRZ#LzDZP;_ z6{_HeEYu}#*wwF3L93KNwU6*W>9C#T3`I`R*xtOe#fnUik{3s0#*o>O1q{7ZRcXvsYD&Gc0lJJmJf90 z|90CLd^Ew*sX->3_T2WORlqV^gf9Z+&ftJLK~!OQ81@xH23BH`MsZQHI_2Ah6xRj| zMy`~Z#^McY3EtRTe4|&12TEjgUGU&1fz z5f)v{r-34XH1dfcg@p<^MtqotRoRc25Vcx-F>NTRvj8N51S;<)rT|6@-%6oLG|Oq- zfE`>C<~+a1K`e7SpX=xgR@7#8D9iFNU}UOP!Dfi!`nQ=hJWyH#`$Ov7mAX0v< zD}_URRJjW%JH1!*zMPyL*Fnqu+Q3$kkK!!gT6DL+m*>B^3sG30viFOQs@`Gk-Wi4m zp*kh_z!>jP&?~49w3+z2{iT#89TUv-tGi`|j=KQ|RH+GJlU&&3G>LFZ;*-=6&aZ`R zuu!8z7@{|rvNd;|4mhB;`^LgNfe7V;d=^~KRU00c6-t=lAv;6~5z#9Vt`Hr>{r4Pv zLZ^<;#ey?jO6{)?Dn9WB{-~;iKLjbHzANhGK*>&Pets>hZL@z%I}i2VAYpU$)wkKE zPKOq5t~8D z!2lZ=XjK9Ji(i_9;M8(QF;Ei9BtuX;C#KDgRPtp}ef=|nu_A>9@HIrK|H9oH_xQxz zg~ive$@67e_I&N#Irg#cC)?{;oxO_)980M_%gcpCTI1pKkRZ|{q?*il-WZ)M9BQRC z^u_{67Q9GduhbWkf@VaMKXd~wbOZkc@tUQl6nvMzTD@pGCaEW46B$3Qb$X&hxX&%m zq;_i;sXz9q-e@HGD@HHvw8rnKR!7j!=TAxv+9%nQRv4pitTe8hw>s89fLnBQcm@$b6Rg z4_=&getmH4^4=i&a-^S$O$0ylj|$hkyzBWn@{mk#2XD*e_6DnnBr@u-5H`Lf zI3G62n~fGVsSg_*yIk1TXm9$8aVx{pu74KroCZx(wLxH0&~98kEw|V4LQBN%*lwJH z7Qb4WXH8@^H~GTJPK4E+l+SuBR)>m0rj$@kdS_waX}phVD0G zBvC*9+aLK9zdI&B^u`0r+_pqH4%DbcYP?OPG)s}fMX5n&=uC!;D~O}65VB_eG_u=v zSvib8ZLA|z5`TXQt;MT4{c+hi_~Sr#^yi%h4a>B;Y$sm6^$#M4nhy&Qvs&(KWdOTX z{GKRbvvKG4I?m1mtJOu3cI+RVt|+V1re-_6t_YEc6P_efg}Zcs#mmve?rzZC9$>K}g zAXu@AM%VPwFJ~kxs9A-`y2LJ<3hA}J5?y<}E_5d%77E}@hpq=p2kXi8s$$)-#enF# z^D@g8j;Iix$RhOkw19lr6n5~*2QcE5mpY>K*Y@W;R{-kcK3kD`)u(x*H!>RjG-{Su;Oy(KIO6yl9}OejnGMk+pt4W$SX}?Ha`r_c z^P}|KVwixM2eUSH68pmuGDTUl)qGf1S*UH7i~DUQKNu$L>DiYBN8s=uX4wTan*BnEgz!M8mGkX@0wjVMUoN@B z)g>8HIzao$f1D9WonxGtxF}+4>($dGUBUMZWfilCtGUTB%xm zn48@9-*XtZ*(7Pi&*l+%gJ zsN7OO0fj1N8&!b&sI(3zB>Gyvw<){kfFUF2-~TTG$410f}E z{pw6QUSUq}xMYuejA=AVbuHC;o_bHEBn5ph8#;xORu7rEWFw3;S;`AR3Rh%lLOReu;KaloiUF&ROZnmzQ*x*)!5wZ!7!QXgg}`XCoAgDEzSof#HucS&rl*$O*6uoUUuCe3 zIWvC;eUK4Ji}OGdM0ogI1#x=W21^MOeTr@O!YNx?KxS3Nu~%*x3Lx-<2ey6c8c_Ys zTaB8_Bb*mz_^%BmWp!=wN9=khyi7eh+OSt8`0uv*<|DFE75UZn@PH)`Q1d3)%E9t? zbEG>L4N0G-7b3GR9E2fitM->PRlmvsZqAeIC0e9aa5LTF zC>g{4WtXAxpE5uhyz+LZ0I0D%B6m_RQqg8^MI+}qH&e?_hC-tTtu}2$?PIw=R%wn! zau~KB*p>B8MW~$8J@Cd~5yhXylquh-jr!B~vR@KhG#@gvl*E4h>7n3F*|qQ4JciRY zxLRpOr}#4r?`}zum&~>twK8(P_8h0bMq=Tgk&0t@4bcTw{24tR7XqWxXEyKDhDOYN z5E!wt{;OqI$JYbv>-GJ$5gkPmTDORrvEWX-4+vXaikaxzdH6*bJVf0pyD{ii7ZUZ~ z{-`JN_DAk@GO8}&+B?HYiqzs)D&qEl%=mDyhi=%xh!?f&rd@U1JKEMzRt;X-F%@9y z*ew~GU^~&u{Zo$`xq7+%mo5B7@!>>N?Fr@M9`#&vs-DkoCXfh0*wpV|ra~D{Q&7Z~XaaqG~9v%b1@_>VSq;WTHe-Fd}NcucVIzivr z8v&JQLVD*KywNg=l@^Rda!@&&OF=6$uLAK5QM~L2IyjyY^;6H}+V9R-DPO_}Pw0sC zSmFXa<4MY5`S9mMvu@5a>*V?EXns@!%?~QqQGd3;HmPsbHNgy+rFtDzn=IZYwnX~Y zV-;B01S%YmFrn;Ovc-8ymaB3F-}uC#`ojaCNqd4yVkj9+7VMRFh;Fd`4{*B2QM%@e zW4{ugh)qVjSv$)BI@S4Q+}FqjX8RnWO_5&Q*}<_w1zZ|BA~MVl0=eBNTKLpqlDy@A6-0LR zRDaYlB35=D7-^~$;bQ%bO{tm*229G(LSpnv|D^sD|ChP!bclZ?}(`>nrf1A{* zJ+*UiK|NNxkehG2Wiskj3zmN1F5kLLW;(A~762{O{`bT(6Q4L#4~?84L;XlbfGGo`)KDX-b@;9YE1|}I5pIqqX^Ngwsv!^x@7aM zU15XBajF{4Z9V9q+0UxksIq5J;6ZBb{HYpskQXKAY5w?1-Z7sPX4=VrtkT{WCAf!x zvS&v4_b-NdQdJt{lN2|1JuiL6G!=~KqK}NSu-|9+TCpZ)Vz){1NQ?VrgfA%PpVa)*q7Z|;6uY|xRd_<2yIo*+nO($?fQvB6j84L+a;iS)lKLGP)#>xQZE(N64m$}ZQmWxhq|}8~uNTViFnc~8O zQi&K%6(nFK#R$|ER-J!-p)DB*riu!m`LaZyS`zzZd>DX_D69fnRTTG7$yaSLhMJ9p zSG_h>LHmGNrDh#Dz<_{4F2u`bNFkI@7MCuMq6I=JtBpkOK}{h}?4m54DS!UAwnX6ARoO3=d@C*@fWNrm<(s3b+4Qe+|15*~Uf>_#=h z?%8HaqCq{NJjxR zyNyHkdtDaZw&R32Wq=Wogu37^Ra@dl#dBTZ5{(!?FMcg^ka`HvWrdu$aa&fLk%7kv zag?fpjS~SpJI2pDA&$|F7-xiQ1SFv@z>>8I%sAkbHMd6rQT6-cI7pqf*AAp=`*Bt{ z9w}R#A_|$hZSG|M?exZcGUY))&k@Rj#3rD+Znf%!PE_b zVVoXDfDw>{5(Ggf`+q|!}0mp94xCsN7)8_qli!83<7GMM(`YuygN?ih*yBOnQ-7no7dR6#Bbeqk}6DcoZx(-K(-AXx}RSp@i8#ovzwMSu~I zgt8CKFmT3&D~oW9S{v_6H{^RNhsjn5yD$g?ihv{pXvT(T*!xIZ!OzBj=qq!ZQ9m0C zhJYd<2?3g&zK^sOzSr6vlZ^XwZU?^$P#j?We*p#nO<2xdjv9SR00000NkvXXu0mjf DS$Fry literal 0 HcmV?d00001 diff --git a/B4J/Subs.bas b/B4J/Subs.bas new file mode 100644 index 0000000..6e5b38e --- /dev/null +++ b/B4J/Subs.bas @@ -0,0 +1,1566 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=StaticCode +Version=11 +@EndOfDesignText@ +'Code module +'Subs in this code module will be accessible from all modules. +Sub Process_Globals + 'These global variables will be declared once when the application starts. + 'These variables can be accessed from all modules. + Public GZip As GZipStrings 'Usa la libreria CompressStrings + Private su As StringUtils 'Usa la libreria StringUtils +' Dim phn As Phone| + Dim devModel As String + Dim kmt, errorLog As SQL 'Requiere la libreria "SQL" +' Dim wifi As MLwifi + Dim ssid As String 'ignore + Dim rutaMaxPoints As Int = 3000 + Dim rutaHrsAtras As Int = 48 +' Dim rutaInicioHoy As String = "" + Private subsLogs As Boolean = False +End Sub + +'Pone el valor de phn.Model en la variable global "devModel" +Sub getPhnId As String 'ignore +' 'Requiere la libreria "Phone" +' devModel = "" 'phn.Model +' If devModel.Length <= 3 Then 'Si phn.Model esta en blanco ... +' Dim t As String = "" 'phn.GetSettings("android_id") 'Intentamos con "android_id" +' devModel = t +' End If +' If devModel.Length >= 3 Then 'Si tenemos valor para phn.Model +' File.WriteString(File.DirInternal, "phnId.txt", devModel) 'Sobreescribimos archivo phnId.txt with deviceId +'' Log("Tenemos phnId: "&devModel&" "&File.DirInternal&"/phn.txt sobreescrito") +' Else If devModel.Length < 3 Then ' Si no tenemos valor, lo leemos de phnId.txt +' Dim s As String = File.ReadString(File.DirInternal, "phnId.txt") +' devModel = s +'' Log("Leemos id de "&File.DirInternal&"/phnId.txt") +'' Log(devModel) +' End If +' Return devModel +End Sub + +'Comprime y regresa un texto (str) en base64 +Sub compress(str As String) As String 'ignore + 'Requiere la libreria "CompressStrings" + Dim compressed() As Byte = GZip.compress(str) +' Log($"UncompressedBytesLength: ${str.Length}"$) +' Log($"CompressedBytesLength: ${compressed.Length}"$) + Dim base64 As String = su.EncodeBase64(compressed) + Log($"Comprimido: ${base64.Length}"$) +' Log($"CompressedBytes converted to base64: ${base64}"$) + Return base64 +End Sub + +'Descomprime y regresa un texto en base64 +Sub decompress(base64 As String) As String 'ignore + Dim decompressedbytes() As Byte = su.DecodeBase64(base64) +' Log($"decompressedbytesLength: ${decompressedbytes.Length}"$) + Dim bc As ByteConverter + Dim uncompressed As String = bc.StringFromBytes(decompressedbytes,"UTF8") + Log($"Descomprimido: ${uncompressed.Length}"$) +' Log($"Decompressed String = ${uncompressed}"$) + Return uncompressed +End Sub + +'Convierte una fecha al formato yyMMddHHmmss +Sub fechaKMT(fecha As String) As String 'ignore +' Log(fecha) + Dim OrigFormat As String = DateTime.DateFormat 'save orig date format + DateTime.DateFormat="yyMMddHHmmss" + Dim nuevaFecha As String=DateTime.Date(fecha) + DateTime.DateFormat=OrigFormat 'return to orig date format +' Log(nuevaFecha) + Return nuevaFecha +End Sub + +'Genera una notificacion con importancia alta +Sub notiHigh(title As String, body As String, activity As Object) 'ignore +' Private notif As Notification +' notif.Initialize2(notif.IMPORTANCE_HIGH) +' notif.Icon = "icon" +' notif.Vibrate = False +' notif.Sound = False +' notif.AutoCancel = True +' Log("notiHigh: "&title) +' notif.SetInfo(title, body, activity) +'' Log("notiHigh SetInfo") +' notif.Notify(777) +End Sub + +'Regresa el objeto de una notificacion con importancia baja +'Sub notiLowReturn(title As String, Body As String, id As Int) As Notification 'ignore +' Private notification As Notification +' notification.Initialize2(notification.IMPORTANCE_LOW) +' Log("notiLowReturn: "&title) +' notification.Icon = "icon" +' notification.Sound = False +' notification.Vibrate = False +' notification.SetInfo(title, Body, Main) +' notification.Notify(id) +'' Log("notiLowReturn SetInfo") +' Return notification +'End Sub + +'Escribimos las coordenadas y fecha a un archivo de texto +Sub guardaInfoEnArchivo(coords As String) 'ignore +' ' Cambiamos el formato de la hora +' Dim OrigFormat As String=DateTime.DateFormat 'save orig date format +' DateTime.DateFormat="MMM-dd HH:mm:ss" +' Dim lastUpdate As String=DateTime.Date(DateTime.Now) +' DateTime.DateFormat=OrigFormat 'return to orig date format +' +' Dim ubic As String = coords&","&lastUpdate +' Dim out As OutputStream = File.OpenOutput(File.DirRootExternal, "gps.txt", True) +' Dim s As String = ubic & CRLF +' Dim t() As Byte = s.GetBytes("UTF-8") +' out.WriteBytes(t, 0, t.Length) +' out.Close +End Sub + +'Escribimos las coordenadas (latitud, longitud, fecha) y fecha a una BD +Sub guardaInfoEnBD(coords As String) 'ignore + Log("Guardamos ubicacion en BD - "&coords) + Try + Dim latlon() As String = Regex.Split("\|", coords) + If latlon.Length < 2 Then latlon = Regex.Split(",", coords) 'Si son menos de 2, entonces estan separadas por comas y no por "|" + If subsLogs Then Log("LatLon="&latlon) + kmt.ExecNonQuery2("INSERT INTO RUTA_GPS(FECHA, LAT, LON) VALUES (?,?,?)", Array As Object (latlon(2),latlon(0),latlon(1))) + Catch + Log(LastException) + End Try +End Sub + +'Regresa la ruta solicitada comprimida y en base64 +Sub dameRuta(inicioRuta As String, origenRuta As String) As String 'ignore +' 'Requiere la libreria "SQL" +' Dim fechaInicio As String +' Try 'incioRuta es numero +' inicioRuta = inicioRuta * 1 +'' Log("fechaInicio numerica="&fechaInicio) +' fechaInicio = fechaKMT(DateTime.Now - (DateTime.TicksPerHour * inicioRuta)) +' Catch 'inicioRuta es string +' fechaInicio = fechaInicioHoy +'' Log("fechaInicio string="&fechaInicio) +' End Try +' If subsLogs Then Log("fechaInicio: "&fechaInicio&" | rutaHrsAtras="&rutaHrsAtras) 'fechaKMT(DateTime.Now) +' Dim c As Cursor +' If kmt.IsInitialized = False Then kmt.Initialize(B4XPages.MainPage.ruta, "kmt.db", True) +' If subsLogs Then Log("select FECHA, LAT, LON from "& origenRuta &" where FECHA > " & fechaInicio & " order by FECHA desc limit " & rutaMaxPoints) +' c = kmt.ExecQuery("select FECHA, LAT, LON from "& origenRuta &" where FECHA > " & fechaInicio & " order by FECHA desc limit " & rutaMaxPoints) +' c.Position = 0 +' Dim ruta2 As String = "" +' If c.RowCount>0 Then +' For i=0 To c.RowCount -1 +' c.Position=i +' ruta2=ruta2&CRLF&c.GetString("LAT")&","&c.GetString("LON")&","&c.GetString("FECHA") +' B4XPages.MainPage.fechaRuta = c.GetString("FECHA") +' Next +' End If +' c.Close +' Return compress(ruta2) +End Sub + +'Limpiamos la tabla RUTA_GPS de la BD +Sub deleteGPS_DB 'ignore + kmt.ExecNonQuery("delete from RUTA_GPS") + kmt.ExecNonQuery("vacuum;") +' ToastMessageShow("Borramos BD Coords GPS", False) +End Sub + +'Limpiamos la tabla errorLog de la BD +Sub deleteErrorLog_DB 'ignore + errorLog.ExecNonQuery("delete from errores") + errorLog.ExecNonQuery("vacuum;") +' ToastMessageShow("BD Errores Borrada", False) +End Sub + +'Borramos el archio "gps.txt" +Sub borramosArchivoGPS 'ignore +' Dim out As OutputStream = File.OpenOutput(File.DirRootExternal, "gps.txt", False) +' Dim s As String = "" +' Dim t() As Byte = s.GetBytes("UTF-8") +' out.WriteBytes(t, 0, t.Length) +' out.Close +End Sub + +'Revisa que exista la BD y si es necesario crea algunans tablas dentro de ella +Sub revisaBD 'ignore +' Log("REVISA BD") + Log(File.DirApp) + If Not(File.Exists(File.DirApp, "kmt.db")) Then + File.Copy(File.DirAssets, "kmt.db", File.DirApp, "kmt.db") + Log("copiamos kmt.db de "&File.DirAssets & " a " & File.DirApp) + End If +' If Not(kmt.IsInitialized) Then kmt.Initialize(File.DirApp, "kmt.db", True) + If Not(kmt.IsInitialized) Then + kmt.InitializeSQLite(File.DirApp, "kmt.db", True) + End If + + kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS RUTA_GPS(FECHA INTEGER, LAT TEXT, LON TEXT)") + kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS bitacora(fecha INTEGER, texto TEXT)") 'Bitacora + kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_MESAS(M_ID TEXT, M_NUMERO TEXT, M_NOMBRE TEXT, M_ZONA TEXT, M_ESTATUS TEXT, M_TICKET TEXT, M_MESERO TEXT, M_PAGO TEXT, M_COMENSALES INTEGER)") + kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_MESEROS(MS_ID TEXT, MS_NOMBRE TEXT, MS_MESAS_ASIGNADAS TEXT)") + kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS PEDIDO (PE_PRECIO2 TEXT,PE_TIPO TEXT, PE_TIPO2 TEXT, PE_FOLIO NUMERIC, PE_DESC NUMERIC, PE_COSTO_SIN TEXT, PE_MESA TEXT, PE_CEDIS TEXT, PE_COSTO_TOT NUMERIC, PE_COSTOU NUMERIC, PE_CANT NUMERIC, PE_PRONOMBRE TEXT, PE_PROID TEXT, PE_TICKET TEXT, PE_FECHA TEXT, PE_MESERO TEXT)") + kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS PEDIDO_TICKET (PT_FACT TEXT, PT_COSTO_SIN TEXT, PT_MESA TEXT, PT_PAGO TEXT, PT_PAGO2 TEXT, PT_ALMACEN TEXT, PT_LON TEXT, PT_LAT TEXT, PT_TICKET TEXT, PT_FECHA TEXT, PT_MESERO TEXT, PT_COMENSALES INTEGER, PT_NOART NUMERIC, PT_MONTO TEXT, PT_ENVIO_OK INTEGER, PT_TIEMPO_TIENDA FLOAT, PT_FACTURA INTEGER)") +' kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS PROPINAS (PR_MESA TEXT, PR_TICKET TEXT, PR_PAGO TEXT, PR_PROPINA TEXT, PT_MESERO TEXT, PR_FECHA TEXT)") + agregaColumna("PEDIDO_TICKET", "PT_TICKET", "TEXT") + agregaColumna("PEDIDO_TICKET", "PT_TARJETA", "TEXT") + agregaColumna("PEDIDO_TICKET", "PT_PROPINA", "TEXT") + agregaColumna("PEDIDO_TICKET", "PT_PAGO_PROPINA", "TEXT") + agregaColumna("PEDIDO", "PE_TICKET", "TEXT") + agregaColumna("PEDIDO", "PE_MESA", "TEXT") + agregaColumna("PEDIDO", "PE_MESERO", "TEXT") + agregaColumna("PEDIDO", "PE_TIPO2", "TEXT") + agregaColumna("PEDIDO_TICKET", "PT_PAGO2", "TEXT") + agregaColumna("PEDIDO", "PE_ORIGEN", "TEXT") + agregaColumna("PEDIDO_TICKET", "PT_ORIGEN", "TEXT") + kmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_VARIABLES (CAT_VA_DESCRIPCION TEXT, CAT_VA_VALOR TEXT)") + 'Tabla para la bitacora de errores +' If Not(errorLog.IsInitialized) Then errorLog.Initialize(B4XPages.MainPage.ruta, "errorLog.db", True) + If Not(errorLog.IsInitialized) Then errorLog.InitializeSQLite(File.DirApp, "errorLog.db", True) + errorLog.ExecNonQuery("CREATE TABLE IF NOT EXISTS errores(fecha INTEGER, error TEXT)") +End Sub + +'Obtiene el ssid al que esta conectado el telefono +Sub getSSID 'ignore +' 'Requiere la libreria "MLWifi400" +' If wifi.isWifiConnected Then +' ssid = wifi.WifiSSID +' End If +End Sub + +'Convierte un texto en formato JSON a un objeto "Map" +Sub JSON2Map(theJson As String) As Map 'ignore + 'Requiere la libreria "JSON" + Try + Private json As JSONParser + json.Initialize(theJson) + Return json.NextObject + Catch + Log(LastException) + log2DB("JSON2Map: "&LastException) + Private m As Map = CreateMap("title":"Error generating JSON", "t":"Error", "Message":LastException, "text" : LastException) + Return m + End Try +End Sub + +'Convierte un mapa a formato JSON +Sub map2JSON(m As Map) As String 'ignore + 'Requiere la libreria "JSON" + 'Convierte un objecto "Map" a JSON + Dim jg As JSONGenerator + jg.Initialize(m) + Dim t As String = jg.ToString + Return t +End Sub + +'Mandamos "coords" en un mensaje a "Sprvsr" +'Sub mandamosLoc(coords As String) 'ignore +'' Log("Iniciamos mandamosLoc "&coords) +'' Log("locRequest="&Tracker.locRequest) +' guardaInfoEnBD(coords)'Escribimos coordenadas y fecha a una bd +' Dim t As String +' If Tracker.locRequest="Activa" Then +' If PushService.au = 1 Then +' t = "au" ' es una actualizacion +' Else +' t = "u" ' es una peticion +' End If +' Dim params As Map = CreateMap("topic":"Sprvsr", "coords":coords, "t":t, "b":PushService.battery, "mt":Main.montoActual) +' CallSub2(PushService, "mandaMensaje",params) +' Tracker.locRequest="Enviada" +' CallSubDelayed(Tracker,"CreateLocationRequest") +' End If +'End Sub + +'Regresa la fecha y hora de hoy a las 00:00 en el formato "yyMMddHHMMSS" +Sub fechaInicioHoy As String 'ignore + Dim OrigFormat As String = DateTime.DateFormat 'save orig date format + DateTime.DateFormat="yyMMdd" + Private h As String = DateTime.Date(DateTime.Now)&"000000" + DateTime.DateFormat=OrigFormat 'return to orig date format + Log("Hoy="&h) + Return h +End Sub + +'Guardamos "texto" a la bitacora +Sub log2DB(texto As String) 'ignore + Log(fechaKMT(DateTime.Now)&" - log2BD: '"&texto&"'") + kmt.ExecNonQuery2("INSERT INTO bitacora(fecha, texto) VALUES (?,?)", Array As Object (fechaKMT(DateTime.now), texto)) +End Sub + +'Regresa verdadero si ya pasaron XX minutos de la fecha dada +Sub masDeXXMins(hora As Int, mins As Int) As Boolean 'ignore + If (hora + mins * DateTime.TicksPerMinute) < DateTime.Now Then + Return True + Else + Return False + End If +End Sub + +'Regresa verdadero si ya pasaron XX minutos de la fechaKMT dada +Sub masDeXXMinsKMT(hora As String, mins As Int) As Boolean 'ignore + Try + ' log($"Hora=${fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute)}, Mins=${mins}, Actual=${fechaKMT(DateTime.Now)}"$,Colors.red) + If fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute < DateTime.Now Then + ' Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " < " & fechaKMT(DateTime.Now)) + Return True + Else + ' Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " > " & fechaKMT(DateTime.Now)) + Return False + End If + Catch + Log(LastException) + End Try +End Sub + +'Limpiamos la tabla "bitacora" de la BD +Sub borraLogDB 'ignore + Log("Borramos BD de log") + kmt.ExecNonQuery("delete from bitacora") + kmt.ExecNonQuery("vacuum;") +End Sub + +'Monitoreamos los servicios para ver si estan activos (No pausados), y si no, los reniciamos +'Sub Monitor 'ignore +' Private monitorStatus As Boolean = True +' log("Corriendo Subs.Monitor", Colors.RGB(161,150,0)) +' If IsPaused(Tracker) Then +' log2DB("Reiniciando 'Tracker Pausado' desde Subs.Monitor") +' StartService(Tracker) +' monitorStatus = False +' Else +' CallSubDelayed(Tracker, "revisaFLP") +' End If +' If IsPaused(PushService) Then +' log2DB("Reiniciando 'PushService Pausado' desde Subs.Monitor") +' StartService(PushService) +' monitorStatus = False +' Else +' revisaPushService +' End If +' If monitorStatus Then log(" +++ +++ Servicios Activos", Colors.Green) +'End Sub + +'Compara la UUG (Ultima Ubicacion Guardada) con FLP.LastKnowLocation y si +'cumple con los requisitos de distancia y precision la guardamos en la BD. +Sub revisaUUG 'ignore +' Try +'' revisaFLP +' If Tracker.FLP.GetLastKnownLocation.IsInitialized Then +' Dim daa As Int = Tracker.UUGCoords.DistanceTo(Tracker.FLP.GetLastKnownLocation) 'Distancia de la UUG a la actual de Tracker.FLP.GetLastKnownLocation +' If B4XPages.MainPage.Logger Then log($"**** UUC "${fechaKMT(Tracker.FLP.GetLastKnownLocation.Time)}|$0.2{Tracker.FLP.GetLastKnownLocation.Accuracy}|$0.8{Tracker.FLP.GetLastKnownLocation.Latitude}|$0.8{Tracker.FLP.GetLastKnownLocation.Longitude}|$0.2{Tracker.FLP.GetLastKnownLocation.Speed}|"$, Colors.RGB(255,112,35)) +' If daa > 40 And Tracker.FLP.GetLastKnownLocation.Accuracy < 35 Then 'Si la distancia de la ubicacion anterior es mayor de XX y la precision es menor de XX, la guardamos ... +' kmt.ExecNonQuery2("INSERT INTO RUTA_GPS(fecha, lat, lon) VALUES (?,?,?)", Array As Object (fechaKMT(Tracker.FLP.GetLastKnownLocation.Time),Tracker.FLP.GetLastKnownLocation.Latitude,Tracker.FLP.GetLastKnownLocation.Longitude)) +' If B4XPages.MainPage.Logger Then Log("++++ Distancia a anterior="&daa&"|"&"Precision="&Tracker.FLP.GetLastKnownLocation.Accuracy) +' End If +' Tracker.UUGCoords = Tracker.FLP.GetLastKnownLocation +' End If +' Catch +' log("If Tracker.FLP.GetLastKnownLocation.IsInitialized --> "&LastException, Colors.Red) +' End Try +End Sub + +'Revisamos que el FLP (FusedLocationProvider) este inicializado y activo +Sub revisaFLP 'ignore +' log("**** **** Revisamos FLP **** ****", Colors.RGB(78,0,227)) +' Private todoBienFLP As Boolean = True +' Try +' If Not(Tracker.FLP.IsInitialized) Then +' log2DB("revisaFLP: No esta inicializado ... 'Reinicializando FLP'") +' Tracker.FLP.Initialize("flp") +' todoBienFLP = False +' End If +' Catch +' log("If Not(Tracker.FLP.IsInitialized) --- "&LastException, Colors.Red) +' End Try +' Try +' If Tracker.FLP.IsInitialized Then +' Try +' If Not(Tracker.FLP.IsConnected) Then +' log2DB("revisaFLP: No esta conectado ... 'Reconectando FLP'") +' ' Tracker.FLP.Connect +' CallSubDelayed(Tracker,"StartFLP") +' todoBienFLP = False +' End If +' Catch +' log("If Not(Tracker.FLP.IsConnected) --> "&LastException, Colors.Red) +' End Try +' Try +' If Tracker.FLP.IsConnected And _ +' Tracker.FLP.GetLastKnownLocation.IsInitialized And _ +' Tracker.FLP.GetLastKnownLocation.DistanceTo(Tracker.UUGCoords) > 500 Then +' log2DB("revisaFLP: 'No se esta actualizando, lo reiniciamos ...'") +' StartService(Tracker) +' todoBienFLP = False +' End If +' Catch +' log("If FLP.IsConnectctd and FLP.getLKL.IsInitialized --> "&LastException, Colors.Red) +' End Try +' End If +' If todoBienFLP Then log(" +++ +++ Sin errores en FLP", Colors.Green) +' Catch +' log("If Tracker.FLP.IsInitialized --> "&LastException, Colors.Red) +' End Try +' ' revisar hora de lastKnownlocation y si es mayor de 10 minutos llamar StartFLP +End Sub + +'Revisamos que el servicio "PushService" este inicializado y activo +'Sub revisaPushService 'ignore +' Private todoBienPS As Boolean = True +' log("**** **** Revisamos PushService **** ****", Colors.RGB(78,0,227)) +' If Not(PushService.wsh.IsInitialized) Then 'Si no esta inicializado ... +' log2DB("revisaPushService: No esta inicializado ... 'Reinicializando PushService'") +' CallSubDelayed(PushService, "Connect") +' todoBienPS = False +' End If +' If Not(PushService.wsh.ws.Connected) Then 'Si no esta conectado ... +' log2DB("revisaPushService: No esta conectado ... 'Reconectando PushService'") +' CallSubDelayed(PushService, "Connect") +' todoBienPS = False +' End If +' If masDeXXMinsKMT(B4XPages.MainPage.pushServiceActividad, 5) Then 'Si mas de xx minutos de la ultima actividad entonces ... +' PushService.wsh.Close +' CallSubDelayed(PushService, "Connect") +'' StartService(PushService) +' log2DB("revisaPushService: 'Reconectamos 'PushService' por inactividad") +' B4XPages.MainPage.pushServiceActividad = fechaKMT(DateTime.Now) +' todoBienPS = False +' End If +' If todoBienPS Then log(" +++ +++ Sin errores en PushService", Colors.Green) +'End Sub + +'Borramos renglones extra de la tabla de errores +Sub borraArribaDe100Errores 'ignore + revisaBD + Log("Borramos BD de log") + errorLog.ExecNonQuery("DELETE FROM errores WHERE fecha NOT in (SELECT fecha FROM errores ORDER BY fecha desc LIMIT 99 )") + errorLog.ExecNonQuery("vacuum;") + Log("Borramos mas de 100 de errorLog") +End Sub + +'Borramos renglones extra de la tabla de bitacora +Sub borraArribaDe600RenglonesBitacora 'ignore + revisaBD + Log("Borramos BD de log") + kmt.ExecNonQuery("DELETE FROM bitacora WHERE fecha NOT in (SELECT fecha FROM bitacora ORDER BY fecha desc LIMIT 599 )") + kmt.ExecNonQuery("vacuum;") + Log("Borramos mas de 600 de bitacora") +End Sub + +'Inserta 50 renglones de prueba a la tabla "errores" +Sub insertaRenglonesPruebaEnErrorLog 'ignore + revisaBD + Log("insertamos 50 renglones a errorLog") + For x = 1 To 50 + errorLog.ExecNonQuery2("INSERT INTO errores(fecha, error) VALUES (?,?)", Array As Object (fechaKMT(DateTime.now), "abc")) + Log(x) + Next +End Sub + +'Regresa la tabla "errores" en una lista de mapas convertida a JSON +Sub dameErroresJSON(SQL As SQL, maxErrores As Int, comprimido As Boolean) As String 'ignore + Log("dameErroresJSON") + Private j As JSONGenerator + Private lim As String + Private cur As ResultSet + Private l As List + Private i As Int = 0 + l.Initialize + Dim m, m2 As Map + m2.Initialize + If maxErrores = 0 Then lim = "" Else lim = "limit "&maxErrores + cur = SQL.ExecQuery("select * from errores order by fecha desc "&lim) + Do While cur.NextRow + m.Initialize + m.Put("fecha", cur.GetString("fecha")) + m.Put("error", cur.GetString("error")) + m2.Put(i,m) + i = i + 1 + Loop + cur.Close + j.Initialize(m2) + Log(j.ToString) + If comprimido Then + Return compress(j.ToString) + Else + Return j.ToString + End If +End Sub + +'Convierte una fecha en formato YYMMDDHHMMSS a Ticks +Sub fechaKMT2Ticks(fKMT As String) As Long 'ignore + Try + If fKMT.Length = 12 Then + Private parteFecha As String = fKMT.SubString2(0,6) + Private parteHora As String = fKMT.SubString(6) + Private OrigFormat As String = DateTime.DateFormat 'save original date format + DateTime.DateFormat="yymmdd" + DateTime.TimeFormat="HHmmss" + Private ticks As Long = DateTime.DateTimeParse(parteFecha,parteHora) + DateTime.DateFormat=OrigFormat 'return to original date format + Return ticks + Else + Log("Formato de fecha incorrecto, debe de ser 'YYMMDDHHMMSS', no '"&fKMT&"' largo="&fKMT.Length) + Return 0 + End If + Catch + Log(LastException) + Log($"Fecha dada: ${fKMT}, Parte Fecha: ${parteFecha}, Parte Hora: ${parteHora}"$) + Return 0 + End Try +End Sub + +'Sub InstallAPK(dir As String, apk As String) 'ignore +' If File.Exists(dir, apk) Then +' Dim i As Intent +' i.Initialize(i.ACTION_VIEW, "file://" & File.Combine(dir, apk)) +' i.SetType("application/vnd.android.package-archive") +' StartActivity(i) +' End If +'End Sub + +'Copia la base de datos del almacenamiento interno al externo en el directorio kmts +'Sub copiaDB(result As Boolean) 'ignore +' ToastMessageShow("copiaDB", False) +' If result Then +' Dim p As String +' If File.ExternalWritable Then +' p = File.DirRootExternal +'' Log("Externo") +' Else +' p = File.DirInternal +'' Log("Interno") +' End If +' Dim theDir As String +' Try +' File.MakeDir(File.DirRootExternal,"kmts") +' theDir = "/kmts" +' Catch +' theDir = "" +' End Try +' Try +' File.Copy(File.DirInternal,"kmt.db",File.DirRootExternal&theDir,"cedex_kmt.db") +' File.Copy(File.DirInternal,"errorLog.db",File.DirRootExternal&theDir,"cedex_errorLog.db") +' ToastMessageShow("BD copiada!", False) +' Catch +' ToastMessageShow("No se pudo hacer la copia: "&LastException, True) +' End Try +' Log("rootExternal="&p) +' Log("File.DirInternal="&File.DirInternal) +' Log("File.DirRootExternal="&File.DirRootExternal) +' Else +' ToastMessageShow("Sin permisos", False) +' End If +'End Sub + +'HAcel elpanel dado del ancho y alto especificados. +'Sub panelWH(panel As Panel, w As Int, h As Int) +' panel.Width = w +' panel.Height = h +'End Sub + +'Hace visible y trae al frente el panel con los parametros "Top" y "Left" dados +'Sub panelVisible(panel As Panel, top As Int, left As Int) 'ignore +'' panel.BringToFront +' panel.Visible = True +' panel.Top = top +' panel.Left = left +'End Sub + +'Centra una imagen dentro de un elemento superior +Sub centraImagen(elemento As ImageView, anchoElementoSuperior As Int) 'ignore + elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2) +End Sub + +'Centra una etiqueta dentro de un elemento superior +Sub centraEtiqueta(elemento As Label, anchoElementoSuperior As Int) 'ignore + elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2) +End Sub + +'Centra un panel horizontalmente dentro de un elemento superior +Sub centraPanel(elemento As Pane, anchoElementoSuperior As Int) 'ignore + elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2) +' Log($"${(anchoElementoSuperior/2)}-${(elemento.Width/2)} = ${Round(anchoElementoSuperior/2)-(elemento.Width/2)}"$) +' Log($"${anchoElementoSuperior}|${elemento.Left}"$ ) +End Sub + +'Centra un panel verticalmente dentro de un elemento superior +'Sub centraPanelV(elemento As Panel, altoElementoSuperior As Int) 'ignore +' elemento.Top = Round(altoElementoSuperior/2)-(elemento.Height/2) +'End Sub + +'Centra una barra de progreso dentro de un elemento superior +Sub centraProgressBar(elemento As ProgressBar, anchoElementoSuperior As Int) 'ignore + elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2) +End Sub + +'Centra un oton dentro de un elemento superior +Sub centraBoton(elemento As Button, anchoElementoSuperior As Int) 'ignore + elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2) +End Sub + +'Regresa el usuario de la tabla USUARIOA si es que existe, si no existe, regresa "SinUsuario". +Sub buscaDBUsuario As String 'ignore + Private c As ResultSet + Private usuario As String = "SinUsuario" + c=kmt.ExecQuery("select USUARIO from usuarioa") + Do While c.NextRow + usuario = c.GetString("USUARIO") + Loop + Return usuario +End Sub + +'Saca el usuario de la tabla USUARIOA +Sub dameUsuarioDeDB As String 'ignore + Private c As ResultSet + Private u As String = "SinUsuario" + If Not(kmt.IsInitialized) Then revisaBD + c = kmt.ExecQuery("select USUARIO from usuarioa") +' c.Position=0 + Do While c.NextRow + u = c.GetString("USUARIO") + Loop + c.Close + Return u +End Sub + +''Inserta un producto en la tabla "PEDIDO" +'Sub guardaProductoX(cedis As String, costoTot As String, costoU As String, cant As String, nombre As String, prodId As String, ticketId As String, fecha As String, usuario As String, tipoV As String, precio2 As String, query As String) 'ignore +'' log("guardaProducto", Colors.Magenta) +'' Log($"Guardamos producto ${prodId}"$) +'' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_TICKET, PE_FECHA, PE_USUARIO, PE_TIPO, PE_PRECIO2, PE_RUTA) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (cedis, costoTot, costoU, cant, nombre, prodId, ticketId, fecha, usuario, tipoV, precio2, B4XPages.MainPage.rutaV)) +'' B4XPages.MainPage.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cant, prodId)) +'' ToastMessageShow("guardaProd", False) +'End Sub + +'Sub guardaProductoSin(cedis As String, costoTot As String, costoU As String, cant As String, nombre As String, prodId As String, ticketId As String, fecha As String, usuario As String, rutaV As String, precioSin As String, tipoV As String, precio2 As String, query As String) 'ignore +'' log("guardaProductoSin", Colors.Magenta) +'' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_TICKET, PE_FECHA, PE_USUARIO, PE_RUTA, PE_COSTO_SIN, PE_TIPO, PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (cedis, costoTot,costoU, cant, nombre, prodId, ticketId, fecha, usuario, rutaV, precioSin, tipoV, precio2)) +'' B4XPages.MainPage.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cant, prodId)) +'' DateTime.DateFormat = "MM/dd/yyyy" +'' Private sDate As String =DateTime.Date(DateTime.Now) +'' Private sTime As String =DateTime.Time(DateTime.Now) +'' Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_TICKET IN (Select CUENTA from cuentaa)") +'' c.Position=0 +'' B4XPages.MainPage.skmt.ExecNonQuery("delete from PEDIDO_TICKET where PC_CLIENTE In (select cuenta from cuentaa)") +'' B4XPages.MainPage.skmt.ExecNonQuery2("insert into PEDIDO_TICKET(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(ticketId, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps, cedis, rutaV, c.GetString("TOTAL_CLIE_SIN"))) +'' B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") +'' c.Close +' ToastMessageShow("guardaProdSin", False) +'End Sub + +'Regresa el almacen actual de la base de datos. +Sub traeAlmacen As String 'ignore + Private c As ResultSet + Private a As String + c = B4XPages.MainPage.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN") + Do While c.NextRow + a = C.GetString("ID_ALMACEN") + Loop + c.Close + Return a +End Sub + + + +'Regresa el nombre del producto desde CAT_GUNAPROD +Sub traeProdNombre(id As String) As String + Private h As ResultSet + Private n As String + h = B4XPages.MainPage.skmt.ExecQuery2("select CAT_GP_NOMBRE from CAT_GUNAPROD where CAT_GP_ID = ? ", Array As String(id.Trim)) + Do While h.NextRow + n = h.GetString("CAT_GP_NOMBRE") + Loop + h.Close + If n = Null Or n="" Then n = "N/A" + Return n +End Sub + +'Regresa la mesa actual de la base de datos. +Sub traeMesa As String 'ignore + Private c As ResultSet + Private m As String + c=B4XPages.MainPage.skmt.ExecQuery("select MESA from MESAA") + m = "0" + Do While c.NextRow + m = c.GetString("MESA") + Loop + c.Close + Return m +End Sub + +Sub traeTicket(mesaId As String, tipoPago As String) As String 'ignore + Private c As ResultSet + Private cl As String = "PENDIENTE" + c=B4XPages.MainPage.skmt.ExecQuery($"Select M_TICKET from CAT_MESAS where M_ID = '${mesaId}' and PE_TIPO = '${tipoPago}'"$) + Do While c.NextRow + cl = c.GetString("M_TICKET") + Loop + c.Close + Return cl +End Sub + +Sub traeFecha As String 'ignore + DateTime.DateFormat = "MM/dd/yyyy" + Private sDate As String = DateTime.Date(DateTime.Now) + Private sTime As String = DateTime.Time(DateTime.Now) + Return sDate & sTime +End Sub + +'Regresa el usuario de la tabla USUARIOA +Sub traeUsuarioDeBD As String 'ignore + Private c As ResultSet + Private u As String = "SinUsuario" + If Not(kmt.IsInitialized) Then revisaBD + c=kmt.ExecQuery("select USUARIO from usuarioa") + Do While c.NextRow + u = c.GetString("USUARIO") + Loop + c.Close + Return u +End Sub + +'Regresa un mapa con la información de la promo. +'Regresa: {id, maxXcliente, maxRecurrente, maxPromos, historico, +' productos={idProducto={idProducto, preciosimptos, precio, almacen, tipo, piezas, usuario, fecha, regalo, clasif}} 'Mapa con los productos de la promo y los datos de cada uno. +' tipos={idProducto=tipo} 'Mapa con id y tipo del producto, 0 si es fijo y 1 si es variable. +' prodsFijos={idProducto,idProducto} 'Lista con los ids de los productos fijos. +' prodsVariables={idProducto,idProducto} 'Lista con los ids de los productos variables. +' resultado="OK" 'Ok si existe la promocion. +' prodsVariablesRequeridos=5} 'Cantidad de productos variables requeridos para la promoción. +Sub traePromo(promo As String, cliente As String) As Map +' Private inicioContador As String = DateTime.Now +' Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery("Select * from promos_comp where cat_pa_id = '"& promo&"'") 'Obtenemos las el maximo de promocioones a otorgar. +' Private siHistorico As String = 0 +' Private promoMap As Map +' Private prodsFijos, prodsFijosPrecios, prodsFijosPiezas, prodsVariables, prodsVariables2 As List +' promoMap.Initialize +' prodsFijos.Initialize +' prodsFijosPrecios.Initialize +' prodsFijosPiezas.Initialize +' prodsVariables.Initialize +' prodsVariables2.Initialize +' c.Position = 0 +' If c.RowCount > 0 Then promoMap = CreateMap("id":promo, "maxXcliente":c.GetString("CAT_PA_MAXPROMCLIE"), "maxRecurrente":c.GetString("CAT_PA_MAXPROMREC"), "maxPromos":c.GetString("CAT_PA_MAXPROM")) +' c = B4XPages.MainPage.skmt.ExecQuery("Select count(*) as hist from HIST_PROMOS where HP_CLIENTE = '"& cliente & "' and HP_CODIGO_PROMOCION = '" & promo & "'") 'Revisamos si hay historico de la promoción. +' c.Position = 0 +' If c.GetString("hist") > 0 Then siHistorico = 1 +' promoMap.Put("historico", siHistorico) +' c = B4XPages.MainPage.skmt.ExecQuery("Select * from CAT_DETALLES_PAQ where CAT_DP_ID = '"& promo & "'") 'Obtenemos los detalles de la promoción. +' c.Position = 0 +' If c.RowCount > 0 Then +' Private prods, tipos As Map +' prods.Initialize +' tipos.Initialize +' For i=0 To c.RowCount -1 +' c.Position=i +' prods.Put(c.GetString("CAT_DP_IDPROD"), CreateMap("idProducto":c.GetString("CAT_DP_IDPROD"), "precioSimptos":c.GetString("CAT_DP_PRECIO_SIMPTOS"), "precio":c.GetString("CAT_DP_PRECIO"), "almacen":c.GetString("CAT_DP_ALMACEN"), "tipo":c.GetString("CAT_DP_TIPO"), "piezas":c.GetString("CAT_DP_PZAS"), "usuario":c.GetString("CAT_DP_USUARIO"), "regalo":c.GetString("CAT_DP_REGALO"), "clasif":c.GetString("CAT_DP_CLASIF"))) +' tipos.Put(c.GetString("CAT_DP_IDPROD"), c.GetString("CAT_DP_TIPO")) +' If c.GetString("CAT_DP_TIPO") = "0" Then +' prodsFijos.Add(c.GetString("CAT_DP_IDPROD")) +' prodsFijosPrecios.Add(c.GetString("CAT_DP_PRECIO")) +' prodsFijosPiezas.Add(c.GetString("CAT_DP_PZAS")) +' End If +' If c.GetString("CAT_DP_TIPO") = "1" Then prodsVariables.Add(c.GetString("CAT_DP_IDPROD")) +' If c.GetString("CAT_DP_TIPO") = "2" Then +'' log(c.GetString("CAT_DP_IDPROD") & "|" & c.GetString("CAT_DP_TIPO"), Colors.Blue) +' prodsVariables2.Add(c.GetString("CAT_DP_IDPROD")) +' End If +'' Log($"id:${c.GetString("CAT_DP_IDPROD")}, tipo:${c.GetString("CAT_DP_TIPO")}"$) +'' If prodsVariables2.Size > 0 Then log(c.GetString("CAT_DP_ID") & "|" & prodsVariables2, Colors.red) +' Next +' promoMap.Put("productos", prods) 'Mapa con los productos de la promocion (id, precio, almacen, tipo, piezas, etc.) +' promoMap.Put("tipos", tipos) 'Mapa con los productos de la promoción y su tipo (fijo o variable). +' promoMap.Put("prodsFijos", prodsFijos) 'Lista de los productos fijos de la promoción. +' promoMap.Put("prodsVariables", prodsVariables) 'Lista de los productos variables de la promoción. +' promoMap.Put("prodsVariables2", prodsVariables2) +' promoMap.Put("prodsFijosCant", prodsFijos.Size) +' promoMap.Put("prodsFijosPrecios", prodsFijosPrecios) +' promoMap.Put("prodsFijosPiezas", prodsFijosPiezas) +' promoMap.Put("prodsVariablesCant", prodsVariables.Size) +' promoMap.Put("prodsVariables2Cant", prodsVariables2.Size) +' promoMap.Put("resultado", "ok") +' Else +' promoMap.Put("resultado", "No hay datos de la promoción.") +' End If +' c = B4XPages.MainPage.skmt.ExecQuery("Select CAT_GP_STS, CAT_GP_IMP1, CAT_GP_NOMBRE from CAT_GUNAPROD where CAT_GP_ID = '"& promo & "'") 'Obtenemos las piezas requeridas de productos variables para la promoción. +' c.Position = 0 +' Private pvr As String = 0 +' Private pvr2 As String = 0 +' If c.RowCount > 0 Then +' c.Position = 0 +' pvr = c.GetString("CAT_GP_STS") +' pvr2 = c.GetString("CAT_GP_IMP1") +' promoMap.Put("prodsVariablesRequeridos", pvr) 'Cantidad de productos variables requeridos para la promoción. +' promoMap.Put("prodsVariables2Requeridos", pvr2) +' promoMap.put("descripcion", c.GetString("CAT_GP_NOMBRE")) +' End If +' c.Close +'' Log($"Inv variables: ${cuantosVariablesTengoBD(promo)}"$) +'' Log($"Inv dispo: ${traemosInventarioDisponibleParaPromo(promo)}"$) +'' log($"Promo ${promo}: ${promoMap}"$, Colors.Green) +'' log("TIEMPO para traePromo -=" & promo & "=- : " & ((DateTime.Now-inicioContador)/1000), Colors.Red) +' Return promoMap +End Sub + +'Regresa un mapa con el inventario disponible por producto para la promoción (desde la base de datos). +Sub traemosInventarioDisponibleParaPromo(promo As String) As Map 'ignore +' Private c As Cursor +' c = B4XPages.MainPage.skmt.ExecQuery2("SELECT CAT_GP_ID, CAT_GP_ALMACEN FROM CAT_GUNAPROD WHERE CAT_GP_ID IN (select CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID = ?)", Array As String(promo)) +'' Private prodInv As Map +'' prodInv.Initialize +' Private prods As Map +' prods.Initialize +' If c.RowCount > 0 Then +' For i=0 To c.RowCount -1 +' c.Position=i +' prods.Put(c.GetString("CAT_GP_ID"), c.GetString("CAT_GP_ALMACEN")) +'' Log($"prod:${c.GetString("CAT_GP_ID")}, inventario:${c.GetString("CAT_GP_ALMACEN")}"$) +' Next +'' prodInv.Put("inventarios", prods) +' End If +' Return prods +End Sub + +'Resta los productos fijos del inventario de la promoción (mapa) y regresa un mapa con el nuevo inventario. +'Hay que darle como parametro un mapa (traePromo(promo)) con toda la informacion de la promocion. +'Regresa en el mapa la llave "resultado" que nos da "ok" o "No hay suficiente producto para la promocion". +Sub restaFijosPromo(promoMap As Map) As Map 'ignore + Private thisLog As Boolean = False 'Si es verdadero, muestra los logs de este sub. + Private inventariosDisponiblesParaEstaPromo As Map = traemosInventarioDisponibleParaPromo(promoMap.Get("id")) 'Obtenemos un mapa con el inventario disponible para cada producto de la promocion desde la base de datos. + If thisLog Then Log(inventariosDisponiblesParaEstaPromo) + If thisLog Then Log("Inventario inicial antes de FIJOS: "&inventariosDisponiblesParaEstaPromo) 'Inventario inicial. + Private i As Int + Private prodsmap As Map = promoMap.Get("productos") 'Obtenemos un mapa con todos los productos de la promoción. + Private prodsFijos As List = promoMap.get("prodsFijos") 'Obtenemos una lista con los productos fijos de la promoción. + For p = 0 To prodsFijos.Size - 1 + Private t As String = prodsFijos.Get(p) 'Obtenemos el Id de este producto desde la lista de productos fijos. + Private p2 As Map = prodsmap.Get(t) 'Obtenemos un mapa con los datos de este producto (id, precio, almacen, tipo, piezas, etc.) + If thisLog Then Log($"T: ${t}, prod ${p2.Get("idProducto")}, piezas: ${p2.Get("piezas")}"$) 'Producto y piezas requeridas + If thisLog Then Log("inventariosDisponiblesParaEstaPromo="&inventariosDisponiblesParaEstaPromo) + If inventariosDisponiblesParaEstaPromo.ContainsKey(t) Then 'Si el mapa del inventario contiene el id del producto entonces ... + i = inventariosDisponiblesParaEstaPromo.get(t) 'Obtenemos del mapa el inventario de este producto. + If thisLog Then Log($"Nuevo inventario de ${t}: ${i}-${promoMap.Get("prodsFijosPiezas").As(List).get(p)} = $1.0{i - promoMap.Get("prodsFijosPiezas").As(List).get(p)}"$) 'El nuevo inventario. + inventariosDisponiblesParaEstaPromo.Put(t, $"${i - promoMap.Get("prodsFijosPiezas").As(List).get(p)}"$) 'Restamos del inventario las piezas requeridas para la promoción y guardamos el nuevo inventario en el mapa. + inventariosDisponiblesParaEstaPromo.Put("resultado", "ok") + Else 'Si en el mapa no esta el id del producto, entonces no tenemos inventario. + inventariosDisponiblesParaEstaPromo.Put("resultado", "No hay suficiente producto para la promocion.") + Log("Sin suficiente inventario fijo: " & t) + Exit + End If + If i - p2.Get("piezas") < 0 Then + inventariosDisponiblesParaEstaPromo.Put("resultado", "No hay suficiente producto para la promocion.") 'Si el inventario de este producto sale negativo, quiere decir que no tenemos suficiente inventario para la promoción. + Exit + End If + Next + If prodsFijos.Size = 0 Then inventariosDisponiblesParaEstaPromo.Put("resultado", "ok") 'No hay productos fijos. + If thisLog Then Log("Inventario final depues de FIJOS: "&inventariosDisponiblesParaEstaPromo) 'Inventario final. + Return inventariosDisponiblesParaEstaPromo +End Sub + +'Revisa si tenemos los productos variables requeridos para la promoción (mapa). +'Hay que darle como parametro un mapa (traePromo(promo)) con toda la informacion de la promocion. +Sub alcanzanLosVariablesParaPromo(promoMap As Map, inventarioSinFijos As Map) As Boolean 'ignore + Private thisLog As Boolean = False 'Si es verdadero, muestra los logs de este sub. + If thisLog Then Log("Inventario inicial: "&inventarioSinFijos) 'Inventario inicial. + Private totalProdsVariables As Int = 0 + Private totalProdsVariables2 As Int = 0 +' Private prodsmap As Map = promoMap.Get("productos") 'Obtenemos un mapa con todos los productos de la promoción. + Private prodsVariables As List = promoMap.get("prodsVariables") 'Obtenemos un a lista con los productos variables de la promoción. + Private prodsVariables2 As List = promoMap.get("prodsVariables2") + For p = 0 To prodsVariables.Size - 1 + Private t As String = prodsVariables.Get(p) 'Obtenemos el Id de este producto desde la lista de productos fijos. + If inventarioSinFijos.ContainsKey(t) Then 'Si existe el producto en la lista del inventario, entonces ... + Private p2 As String = inventarioSinFijos.Get(t) 'Obtenemos el inventario disponible este producto. + totalProdsVariables = totalProdsVariables + p2 + If thisLog Then Log($"prod ${t}, hay: ${p2}"$) 'Producto y piezas requeridas + End If + Next + For p = 0 To prodsVariables2.Size - 1 + Private t As String = prodsVariables2.Get(p) 'Obtenemos el Id de este producto desde la lista de productos fijos. + If inventarioSinFijos.ContainsKey(t) Then 'Si existe el producto en la lista del inventario, entonces ... + Private p2 As String = inventarioSinFijos.Get(t) 'Obtenemos el inventario disponible este producto. + totalProdsVariables2 = totalProdsVariables2 + p2 + If thisLog Then Log($"prod ${t}, hay: ${p2}"$) 'Producto y piezas requeridas + End If + Next + If thisLog Then Log("Total prods variables=" & totalProdsVariables & ", requeridos=" & promoMap.Get("prodsVariablesRequeridos")) + If thisLog Then Log("Total prods variables2=" & totalProdsVariables2 & ", requeridos2=" & promoMap.Get("prodsVariables2Requeridos")) + Private res As Boolean = False + If totalProdsVariables >= promoMap.Get("prodsVariablesRequeridos") Then res = True 'Si el total de inventario de productos variables (totalProdsVariables) es mayor o igual a los productos requeridos entonces regresamos TRUE + If totalProdsVariables2 >= promoMap.Get("prodsVariables2Requeridos") Then res = True 'Si el total de inventario de productos variables (totalProdsVariables) es mayor o igual a los productos requeridos entonces regresamos TRUE + Return res +End Sub + +'Regresa el numero máximo de promociones permitidas, tomando en cuenta recurrentes, clientes y maxPromos. +Sub traeMaxPromos(pm As Map) As Int +' Private thisLog As Boolean = False 'Si es verdadero, muestra los logs de este sub. +' Private maxPromos As List +' Private vendidas As Int = 0 +' maxPromos.Initialize +'' If B4XPages.MainPage.promosLog Then Log("==== HISTORICO:"&pm.Get("historico")) +' If thisLog Then Log(pm) +' If pm.Get("historico") = "1" Then maxPromos.Add(pm.Get("maxRecurrente")) 'Si hay historico, agregamos maxRecurrente +' maxPromos.Add(pm.Get("maxPromos")) 'Agregamos maxPromos +' maxPromos.Add(pm.Get("maxXcliente")) 'Agregamos maxXcliente +' maxPromos.Sort(True) +' +'' Log($"|${pm.Get("id").As(String).trim}|${traeTicket.Trim}|"$) +' Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery2("select sum(PE_CANT) as vendidas from PEDIDO where PE_PROID = ? and PE_TICKET = ? ", Array As String(pm.Get("id").As(String).trim, traeTicket(B4XPages.MainPage.mesaActual).Trim)) +' If c.RowCount > 0 Then +' c.Position = 0 +' vendidas = c.GetInt("vendidas") +'' Log(vendidas) +' End If + +' If B4XPages.MainPage.promosLog Then Log(maxPromos) +' If B4XPages.MainPage.promosLog Then Log("Max Promos="&maxPromos.Get(0)) +' log($"maxPromos=${maxPromos.Get(0)} - vendidas=${vendidas}"$, Colors.red) +' Return maxPromos.Get(0) - vendidas 'Regresamos el numero mas pequeño de las opciones. +End Sub + +'Regresa la cantidad de promos que se le han vendido al cliente. +'HAY QUE REVISAR QUE TRAIGA BIEN LOS DATOS, HAY QUE PONER MAS DATOS EN EL "WHERE" DEL QUERY. +Sub traePromosVendidas(promo As String, cliente As String) As Int + Private c As ResultSet + Private pv As Int = 0 + c=B4XPages.MainPage.skmt.ExecQuery($"select PE_CANT from PEDIDO where PE_PROID = '${promo}' and PE_TICKET = '${cliente}'"$) + Do While c.NextRow + pv = c.GetInt("PE_CANT") + Loop + Return pv +End Sub + +Sub procesaPromocion(idPromo As String, cliente As String) As Map 'ignore + Private thisLog As Boolean = False 'Si es verdadero, muestra los logs de este sub. + Private inicioContador As String = DateTime.Now + If thisLog Then Log($"********* Iniciamos revision de Promo ${idPromo} *********"$) + 'Obtenemos el mapa con toda la info de la promoción. + Private pm As Map = traePromo(idPromo, cliente) + If thisLog Then Log(pm) + If pm.Get("resultado") = "ok" Then 'Si encontramos la promoción, entonces ... + 'Buscamos el máximo de promociones permitidas. + If thisLog Then Log($"Promociones permitidas=${traeMaxPromos(pm)}"$) + If thisLog Then Log("Promos vendidas: " & traePromosVendidas(idPromo, cliente)) + If traePromosVendidas(idPromo, cliente) >= traeMaxPromos(pm) Then + If thisLog Then Log("Ya se vendieron las promos PERMITIDAS para el cliente") + Return CreateMap("status":"ko", "mp":pm) + End If + 'Restamos del inventario (mapa) las piezas necesarias para los productos fijos. + Private inventarioSinFijos As Map = restaFijosPromo(pm) + If thisLog Then Log("inventariosfijos="&inventarioSinFijos) + + If inventarioSinFijos.Get("resultado") = "ok" Then + 'Revisamos que los productos variables requeridos sean menos que el inventario total (mapa). + Private pv As Boolean = alcanzanLosVariablesParaPromo(pm, inventarioSinFijos) + If thisLog Then Log("Alcanzan los variables? --> " & pv) + If pv Then Return CreateMap("status":"ok", "mp":pm) Else Return CreateMap("status":"ko", "mp":pm) + Else + If thisLog Then Log("NO HAY INVENTARIO SUFICIENTE " & idPromo) + Return CreateMap("status":"ko", "mp":pm) + End If + End If + ' Si tenemos suficiente inventario para los variables mostramos la promocion, si no ... + ' break 'NO HAY INVENTARIO SUFICIENTE PARA LA PROMOCION. + + Log("TIEMPO DE PROCESO ESTA PROMO: " & ((DateTime.Now-inicioContador)/1000)) +End Sub + +'Regresa cuantas promos alcanzan con los productos FIJOS que hay en inventario. +Sub revisaMaxPromosProdsFijosPorInventario2(pm As Map) As Int + Private thisLog As Boolean = False + If thisLog Then Log($"pm=${pm}"$) +' Private prodsFijos As List = pm.get("prodsFijos") + Private invDispParaPromo As Map = traemosInventarioDisponibleParaPromo(pm.Get("id")) + If thisLog Then Log($"invDispParaPromo=${invDispParaPromo}"$) + Private maxPromos As String = traeMaxPromos(pm) + Private maxPromosFijosXinv As Int = 1 + Private fpf2, pdp2 As Int + Private salir As Boolean = False + Private pf As List = pm.Get("prodsFijos") + Private pfp As List = pm.Get("prodsFijosPiezas") + If thisLog Then Log($"maxPromos=${maxPromos}, prodsFijos=${pf}, piezas=${pfp}"$) + If thisLog Then Log($"InvFijo disponible=${invDispParaPromo}"$) + Private invFijoXpromo As Map + invFijoXpromo.Initialize + For p = 0 To pf.Size -1 'Generamos mapa con los productos fijo y piezas requeridos por promo. + invFijoXpromo.Put(pf.Get(p), pfp.Get(p)) + Next + If thisLog Then Log("Inv req. de prods fijos x promo" & invFijoXpromo) + For i = 1 To maxPromos 'Revisamos cuantas promociones alcanzan, hasta llegar al máximo de promos permitadas. + If thisLog Then Log("Prods para promo " & (i+1)) + For q = 0 To pf.Size - 1 + Private q2 As String = pf.Get(q) + If thisLog Then Log("q="&q2) +' fpf2 = invFijoXpromo.Get(q2) * i 'Multiplicamos las piezas requeridas por la cantidad de promos. + fpf2 = pfp.Get(q) * i 'Multiplicamos las piezas requeridas por la cantidad de promos. + pdp2 = invDispParaPromo.Get(q2) + If thisLog Then Log($"pf=${q2}, Actual=${(i)}, max promos: ${pdp2}-${fpf2}=${pdp2 - fpf2}"$) + If pdp2 - fpf2 < 0 Then 'Si el inventario es negativo, entonces ya no alcanza para este producto. + salir=True + Exit + End If + Next + If salir Then Exit + maxPromosFijosXinv = i + Next + If thisLog Then Log("InvFijo requerido x promo="&invFijoXpromo) + Log("Maximo de promociones de prodsFijos POR inventario = " & maxPromosFijosXinv) + Return maxPromosFijosXinv +End Sub + +'Regresa cuantas promos alcanzan con los productos FIJOS que hay en inventario. +Sub revisaMaxPromosProdsFijosPorInventario(pm As Map) As Int + Private thisLog As Boolean = False + Private invFijoXpromo As Map + Private t As List + t.Initialize + t.Add(traeMaxPromos(pm)) ' Agregamos a la lista las promos maximas permitidas (recurrente, cliente y promo). + invFijoXpromo.Initialize + If thisLog Then Log($"pm=${pm}"$) + Private invDispParaPromo As Map = traemosInventarioDisponibleParaPromo(pm.Get("id")) + If thisLog Then Log($"invDispParaPromo=${invDispParaPromo}"$) + Private prodsFijosPiezas As List = pm.Get("prodsFijosPiezas") + Private idProdsFijos As List = pm.Get("prodsFijos") + For p = 0 To idProdsFijos.Size -1 'Generamos una lista con las promos disponibles por producto (dividimos el inventario total entre las piezas requeridas). + If thisLog Then Log($"id=${idProdsFijos.Get(p)}, inv=${invDispParaPromo.Get(idProdsFijos.Get(p))}, pzas=${prodsFijosPiezas.Get(p)}"$) + If thisLog Then Log($"${(invDispParaPromo.Get(idProdsFijos.Get(p)) / prodsFijosPiezas.Get(p))}"$) + Private x() As String = Regex.Split("\.", $"${(invDispParaPromo.Get(idProdsFijos.Get(p)) / prodsFijosPiezas.Get(p))}"$) 'Separamos el resultado de la division por el punto decimal. + If thisLog Then Log(x(0)) + t.Add(x(0).As(Int)) 'Solo guardamos la parte del entero de la division. + Next + t.Sort(True) 'Ordenamos la lista para que en el lugar 0 este el resultao mas pequeño. + If thisLog Then Log($"prodsFijos=${idProdsFijos}"$) + If thisLog Then Log($"prodsFijosPiezasReq=${prodsFijosPiezas}"$) + If thisLog Then Log($"invFijoXpromo=${invFijoXpromo}"$) +' log("Max promos de prodsFijos POR inventario = " & t.Get(0), Colors.red) + Return t.Get(0) 'Regresamos el resultado mas pequeño. +End Sub + +'Regresa cuantas promos alcanzan con los productos VARIABLES que hay en inventario. +'La cantidad de promos disponibles se calcula DESPUES de descontar los productos fijos, y si las +'promos por productos fijos llega al maximo, aunque se puedan mas de producos variables, solo se +'regresa el maximo por productos fijos. Ej. si las promos por variables es 10, pero el maximo por +'fijos es 5, entonces regresamos 5. +Sub revisaMaxPromosProdsVariablesPorInventario(pm As Map) As Int 'ignore + Private thisLog As Boolean = False + If thisLog Then Log("======================================================") + If thisLog Then Log("======================================================") + Private invFijoXpromo As Map + invFijoXpromo.Initialize + Private totalProdsVariablesDisponibles As Int = 0 + Private totalProdsVariables2Disponibles As Int = 0 + If thisLog Then Log($"pm=${pm}"$) + Private invDispParaPromo As Map = traemosInventarioDisponibleParaPromo(pm.Get("id")) + If thisLog Then Log($"invDispParaPromo=${invDispParaPromo}"$) + Private maxPromos As String = traeMaxPromos(pm) + Private maxPromosXFijos As Int = revisaMaxPromosProdsFijosPorInventario(pm) + Private idProdsVariables As List = pm.Get("prodsVariables") + Private idProdsVariables2 As List = pm.Get("prodsVariables2") + Private prodsVariablesRequeridos As Int = pm.Get("prodsVariablesRequeridos") + Private prodsVariables2Requeridos As Int = pm.Get("prodsVariables2Requeridos") + Private prodsFijosPiezas As List = pm.Get("prodsFijosPiezas") + Private idProdsFijos As List = pm.Get("prodsFijos") + For p = 0 To idProdsFijos.Size -1 'Generamos mapa con los productos fijos y piezas requeridas por promo. + invFijoXpromo.Put(idProdsFijos.Get(p), prodsFijosPiezas.Get(p)) + Private idEsteProd As String = idProdsFijos.Get(p) + Private invEsteProd As Int = invDispParaPromo.Get(idEsteProd) + Private pzasReqEsteProd As Int = prodsFijosPiezas.Get(p) + If thisLog Then Log($"id=${idEsteProd}, inv=${invEsteProd}, pzas=${pzasReqEsteProd}"$) +' invDispParaPromo.Put( idEsteProd, (invEsteProd - (1)) ) + Next + If thisLog Then Log($"MaxPromos=${maxPromos}, promosXFijos=${maxPromosXFijos}"$) + If thisLog Then Log($"prodsFijos=${idProdsFijos}"$) + If thisLog Then Log($"prodsFijosPiezasReq=${prodsFijosPiezas}"$) + If thisLog Then Log($"prodsVariables=${idProdsVariables}${CRLF}Variables Req=${prodsVariablesRequeridos} "$) + If thisLog Then Log($"prodsVariables2=${idProdsVariables2}${CRLF}Variables2 Req=${prodsVariables2Requeridos} "$) + If thisLog Then Log($"invFijoXpromo=${invFijoXpromo}"$) + If thisLog Then Log($"Prods variables disponibles = ${totalProdsVariablesDisponibles}"$) + If thisLog Then Log($"Prods variables2 disponibles = ${totalProdsVariables2Disponibles}"$) + Private maxPromosXVariables As Int = 0 + Private maxPromosXVariables2 As Int = 0 + For x = 1 To maxPromosXFijos + If thisLog Then Log("=====================================================") + If thisLog Then Log("=====================================================") + For i = 0 To idProdsFijos.Size - 1 + If thisLog Then Log($"FIJO - ${idProdsFijos.Get(i)}, ${invDispParaPromo.Get(idProdsFijos.Get(i))} - ${prodsFijosPiezas.Get(i).As(Int)*(i+1)}"$) + invDispParaPromo.Put(idProdsFijos.Get(i), invDispParaPromo.Get(idProdsFijos.Get(i)).As(Int) - prodsFijosPiezas.Get(i).As(Int)*(i+1)) 'Restamos las piezas de los productos fijos del inventario disponible. + Next + If thisLog Then Log("Inv disponible despues de restar fijos = " & invDispParaPromo) + + totalProdsVariablesDisponibles = 0 + totalProdsVariables2Disponibles = 0 + For i = 0 To idProdsVariables.Size - 1 'Obtenemos total de productos variables disponibes. + If invDispParaPromo.ContainsKey(idProdsVariables.Get(i)) Then + totalProdsVariablesDisponibles = totalProdsVariablesDisponibles + invDispParaPromo.Get(idProdsVariables.Get(i)) + End If + Next + For i = 0 To idProdsVariables2.Size - 1 'Obtenemos total de productos variables disponibes. + If invDispParaPromo.ContainsKey(idProdsVariables2.Get(i)) Then + totalProdsVariables2Disponibles = totalProdsVariables2Disponibles + invDispParaPromo.Get(idProdsVariables2.Get(i)) + End If + Next + 'Revisamos variables. + If thisLog Then Log($"Var disponibles - var requeridos : ${totalProdsVariablesDisponibles} - ${prodsVariablesRequeridos*x}"$) + totalProdsVariablesDisponibles = totalProdsVariablesDisponibles - (prodsVariablesRequeridos*x) + totalProdsVariables2Disponibles = totalProdsVariables2Disponibles - (prodsVariables2Requeridos*x) + If thisLog Then Log("prodsVariables disponibles despues de promo = " & totalProdsVariablesDisponibles) + If thisLog Then Log("prodsVariables2 disponibles despues de promo = " & totalProdsVariables2Disponibles) + If totalProdsVariablesDisponibles < 0 Then Exit 'Ya no hay inventario disponible. + If totalProdsVariables2Disponibles < 0 Then Exit 'Ya no hay inventario disponible. + maxPromosXVariables = x + Next + 'Restamos fijos. + If thisLog Then Log("Max promos de prodsVariables POR inventario = " & maxPromosXVariables) + Return maxPromosXVariables +End Sub + +'Regresa la suma del inventario de los productos variables de la promoción dada desde la base de datos. +Sub cuantosVariablesTengoBD(promo As String) As String 'ignore +' Private x As String = "0" +' If promo <> "" Then +' Private c As Cursor +' c = B4XPages.MainPage.skmt.ExecQuery2("Select SUM(CAT_GP_ALMACEN) as variables FROM CAT_GUNAPROD2 WHERE CAT_GP_ID IN (Select CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID = ? and cat_dp_tipo = 1 GROUP BY CAT_DP_IDPROD)", Array As String (promo)) +' If c.RowCount > -1 Then +' c.Position = 0 +' If c.GetString("variables") <> Null Then x = c.GetString("variables") +' End If +' End If +' Return x +End Sub + +'Regresa un mapa con los datos del producto desde la base de datos. +'el mapa incluye: Id, nombre, tipo y subtipo del producto. +Sub traeProdIdDeBD As Map 'ignore + Private c As ResultSet + Private m As Map + c=B4XPages.MainPage.skmt.ExecQuery("select CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_TIPO,CAT_GP_SUBTIPO from CAT_GUNAPROD where CAT_GP_NOMBRE In (Select PDESC from PROID)") + m = CreateMap("id":"N/A", "nombre":"N/A", "tipo":"N/A", "subtipo":"N/A") + Do While c.NextRow + m = CreateMap("id":c.GetString("CAT_GP_ID"), "nombre":c.GetString("CAT_GP_NOMBRE"), "tipo":c.GetString("CAT_GP_TIPO"), "subtipo":c.GetString("CAT_GP_SUBTIPO")) + Loop + c.Close + Return m +End Sub + +'Regresa el total de productos y monto del pedido del ticket actual. +'HAY QUE REVISAR QYUE EL WHERE TENGA LOS PARAMETRSO NECESARIOS +Sub traeTotalesTicketActual As Map + Private m As Map + m.Initialize + Private c_prodsX As ResultSet = B4XPages.MainPage.skmt.ExecQuery("select ifnull(sum(PE_CANT), 0) as cantProds, ifnull(sum(PE_COSTO_TOT), 0) as costoTotal FROM PEDIDO WHERE PE_TICKET IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE asc") +' log($"Productos de la orden: ${c_prodsX.GetString("cantProds")}, Total: ${c_prodsX.GetString("costoTotal")}"$, Colors.red) + Do While c_prodsX.NextRow + m = CreateMap("productos": c_prodsX.GetString("cantProds"), "monto" : c_prodsX.GetString("costoTotal")) + Loop + Return m +End Sub + +'Regresa el total del monto del ticket actual desde PEDIDO_TICKET. +Sub traeTotalTicketActual_PT As String + Private t As String = 0 + Private pt As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select ifnull(sum(PT_MONTO),0) as subtotal from PEDIDO_TICKET where PT_TICKET = '${B4XPages.MainPage.ticketActual}' and PT_MESA = '${B4XPages.MainPage.mesaActual}' and PT_PAGO = 'VENTA'"$) + Do While pt.NextRow + t = pt.GetString("subtotal") + Loop + Return t +End Sub + +'Regresa el total del monto del ticket actual desde PEDIDO. +Sub traeTotalTicketActual_P(tipoPago As String) As String + Private st As String = 0 + Private desc As String = 0 + Private p As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select PE_COSTO_TOT, ifnull(PE_DESC, 0) as DESC, CAT_GP_TIPO from PEDIDO join CAT_GUNAPROD on CAT_GP_ID = PE_PROID where PE_TICKET = '${B4XPages.MainPage.ticketActual}' and PE_MESA = '${B4XPages.MainPage.mesaActual}' and PE_TIPO = '${tipoPago}'"$) +' Log($"${p.RowCount} - select PE_COSTO_TOT, ifnull(PE_DESC, 0) as DESC, CAT_GP_TIPO from PEDIDO join CAT_GUNAPROD on CAT_GP_ID = PE_PROID where PE_TICKET = '${B4XPages.MainPage.ticketActual}' and PE_MESA = '${B4XPages.MainPage.mesaActual}' and PE_TIPO = '${tipoPago}'"$) + Do While p.NextRow + desc = p.GetString("DESC") / 100 + st = st + (p.GetString("PE_COSTO_TOT") - (p.GetString("PE_COSTO_TOT") * desc)) + Loop + Return st +End Sub + +'Borra el pedido del cliente actual. +'Borra los registros de la tabla "pedido" y "PEDIDO_TICKET" +'Actualiza las tablas "cat_gunaprod" y "kmt_info". +Sub borraPedidoClienteActual As String +' Private thisC As Cursor +' thisC=B4XPages.MainPage.skmt.ExecQuery("select PE_PROID,PE_CANT FROM PEDIDO where PE_TICKET in (Select CUENTA from cuentaa) ") +' If thisC.RowCount>0 Then +' For i=0 To thisC.RowCount -1 +' thisC.Position=i +' B4XPages.MainPage.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(thisC.GetString("PE_CANT"),thisC.GetString("PE_PROID"))) +' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (traeAlmacen, thisC.GetString("PE_PROID"),thisC.GetString("PE_CANT")* -1)) +' Next +' End If +' B4XPages.MainPage.skmt.ExecNonQuery("delete from PEDIDO_TICKET where pc_cliente in (Select CUENTA from cuentaa)") +' B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido where PE_TICKET in (Select CUENTA from cuentaa)") +' B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + Return 1 +End Sub + +'Regresa verdadero si la columna gestion en la tabla "kmt_info" tene valor 2. +'si no, entonces regresa falso. +Sub pedidoGuardado As Boolean +' Private guardado As Boolean = False +' Private g As Cursor = B4XPages.MainPage.skmt.ExecQuery("select gestion from kmt_info where CAT_CL_CODIGO in (Select CUENTA from cuentaa)") +' If g.RowCount > 0 Then +' g.Position=0 +' If g.GetString("gestion") = "2" Then guardado = True +' End If +' Log($"Guardado=${guardado}"$) +' Return guardado +End Sub + +'Regresa verdadero si hay pedido en la tabla "PEDIDO" del cliente actual. +'HAY QUE REVSAR QUE REGERSE BIEN LOS DATOS; SEGURO HAY QUE PONER MAS DATOS EN EL WHERE DEL QUERY. +Sub hayPedido As Boolean +'' Log($"TraeTicket: ${traeTicket}"$) +' Private thisC As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select count(PE_TICKET) as hayPedido from PEDIDO where PE_TICKET = '${B4XPages.MainPage.ticketActual}' and PE_MESA = '${B4XPages.MainPage.mesaActual}' and PE_TIPO = 'VENTA'"$) +'' Log($"select count(PE_TICKET) as hayPedido from PEDIDO where PE_TICKET = '${B4XPages.MainPage.ticketActual}'"$) +'' thisC.Position = 0 +' Private hay As Boolean = False +' Do While thisC.NextRow +' If thisC.GetInt("hayPedido") > 0 Then hay = True +' Loop +' Return hay +End Sub + +'Muestra en el Log los campos y valores que regresan en el JobDone. +Sub logJobDoneResultados(resultado As DBResult) + For Each records() As Object In resultado.Rows + Log($"====== ${resultado.Tag} - REGISTROS = ${resultado.Rows.Size}"$) + For Each k As String In resultado.Columns.Keys + Log(k & " = " & records(resultado.Columns.Get(k))) + Next + Next +End Sub + +'Agrega una columna a la tabla especificada. +'Hay que indicar el "tipo" de la columna (TEXT, INTEGER, ETC) +'Ej. agregaColumna("TABLA", "COLUMNA", "TIPO") +Sub agregaColumna(tabla As String, columna As String, tipo As String) + Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna en la tabla + Private c As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"SELECT COUNT(*) AS fCol FROM pragma_table_info('${tabla}') WHERE name='${columna}'"$) + Do While c.NextRow + If c.GetString("fCol") = 0 Then 'Si no esta la columna la agregamos + B4XPages.MainPage.skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$) + Log($"Columna "${columna} ${tipo}", agregada a "${tabla}"."$) + End If + Loop + Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch + Try + B4XPages.MainPage.skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$) + Log($"Columna "${columna} ${tipo}", agregada a "${tabla}".."$) + Catch +' Log(LastException) + End Try + End Try +End Sub + +'Regresa el total del pedido en la tabla "PEDIDO" del cliente actual. +Sub totalPedido As String +' Private cT As Cursor = B4XPages.MainPage.skmt.ExecQuery($"select sum(PE_COSTO_TOT) as total from PEDIDO where PE_TICKET = '${traeTicket(B4XPages.MainPage.mesaActual)}'"$) +' Private pTotal As String = "0" +' If cT.RowCount > 0 Then +' cT.Position = 0 +'' Log("|"&cT.GetLong("total")&"|"&pTotal) +' Private tempT As String = cT.GetLong("total") +' If tempT <> "null" And tempT <> Null Then +'' Log("|"&cT.GetLong("total")&"|") +' pTotal = tempT +' End If +'' Log($"Cliente actual=${traeTicket}, hayPedido=${hay}"$) +' End If +' cT.Close +' Return pTotal +End Sub + +Sub actualizaProducto(costoU As String, cant As String, nombre As String, prodId As String, ticketId As String, fecha As String, mesero As String, mesa As String, precioSin As String, tipoVenta As String, comensales As Int) +' If nombre.Length < 6 Then ToastMessageShow("(actualizaProducto) El nombre del producto no es valido " & nombre, True) + Log($"actualizaProducto, p=${prodId}, nombre=${nombre}, cant=${cant}, tipo=${tipoVenta}, mesa=${mesa}, mesero=${mesero}, comensales=${comensales}, ticket=${ticketId}"$) +' Private tablaProds As String = "cat_gunaprod2" +' If tipoVenta = "ABORDO" Then tablaProds = "cat_gunaprod" + Private c As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select * from pedido where PE_PROID = '${prodId}' and PE_TICKET = '${ticketId}' and PE_MESA = '${mesa}' and PE_TIPO = '${tipoVenta}'"$) + Private cont As Int = 0 + + Do While c.NextRow + Log("ACTUALIZAMOS PROD") +' c.Position = 0 + cont = cont + 1 + Private antCant As Int = 0 + If IsNumber(c.GetInt("PE_CANT")) Then antCant=c.GetInt("PE_CANT") + Private difCant As Int = cant - antCant + B4XPages.MainPage.skmt.ExecNonQuery($"update pedido set pe_pronombre = '${nombre}', pe_cant = ${cant}, pe_costou = ${costoU}, pe_costo_tot = ${(cant*costoU)} where pe_proid = '${prodId}' and PE_TICKET = '${ticketId}' and PE_MESA = '${mesa}' and PE_TIPO = '${tipoVenta}'"$) + B4XPages.MainPage.skmt.ExecNonQuery($"update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - (${difCant}) where cat_gp_id = '${prodId}' "$) + c=B4XPages.MainPage.skmt.ExecQuery($"select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_TICKET = '${ticketId}' and PE_MESA = '${mesa}' and PE_TIPO = '${tipoVenta}'"$) +' Log($"select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_TICKET = '${ticketId}' and PE_MESA = '${mesa}' and PE_TIPO = '${tipoVenta}'"$) +' c.Position=0 + B4XPages.MainPage.skmt.ExecNonQuery($"delete from PEDIDO_TICKET where PT_TICKET = '${ticketId}' and PT_MESA = '${mesa}' and PT_PAGO = '${tipoVenta}'"$) +' Log($"delete from PEDIDO_TICKET where PT_TICKET = '${ticketId}' and PT_MESA = '${mesa}' and PT_PAGO = '${tipoVenta}'"$) + B4XPages.MainPage.skmt.ExecNonQuery2("insert into PEDIDO_TICKET(PT_TICKET, PT_PAGO, PT_FECHA, PT_MESERO, PT_NOART, PT_MONTO, PT_MESA, PT_COSTO_SIN, PT_COMENSALES) VALUES (?,?,?,?,?,?,?,?,?)", Array As Object(ticketId, tipoVenta, fecha, mesero, c.GetString("CANT_CLIE"), c.GetString("TOTAL_CLIE"), mesa, c.GetString("TOTAL_CLIE_SIN"), comensales)) +' Log($"insert into PEDIDO_TICKET(PT_TICKET, PT_PAGO, PT_FECHA, PT_MESERO, PT_NOART, PT_MONTO, PT_MESA, PT_COSTO_SIN, PT_COMENSALES) VALUES (${ticketId}, ${tipoVenta}, fecha, mesero, ${c.GetString("CANT_CLIE")}, ${c.GetString("TOTAL_CLIE")}, ${mesa}, c.GetString("TOTAL_CLIE_SIN"), comensales)"$) + If cant = 0 Then + Log($"BORRAMOS PRODUCTO - ${prodId}"$) + B4XPages.MainPage.skmt.ExecNonQuery($"delete from pedido where pe_proid = '${prodId}' and PE_TICKET = '${ticketId}' and PE_MESA = '${mesa}' and PE_TIPO = '${tipoVenta}'"$) + Log($"Borramos pe_proid='${prodId}' and PE_TICKET='${ticketId}'"$) + Private pe As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select count(PE_TICKET) as cuantosPedidos from pedido where PE_TICKET = '${ticketId}' and PE_MESA = '${mesa}' and PE_TIPO = '${tipoVenta}'"$) +' pe.Position = 0 + Do While pe.NextRow + If pe.GetString("cuantosPedidos") = 0 Then + Log("Borramos PEDIDO_TICKET") + B4XPages.MainPage.skmt.ExecNonQuery($"delete from PEDIDO_TICKET where PT_TICKET = '${ticketId}' and PT_MESA = '${mesa}' and PT_PAGO = '${tipoVenta}'"$) + Log($"delete from PEDIDO_TICKET where PT_TICKET = '${ticketId}' and PT_MESA = '${mesa}' and PT_PAGO = '${tipoVenta}'"$) + End If + Loop + End If + Loop +' If c.RowCount > 0 Then +' +' Else +' End If + If cont = 0 Then +' INSERTAMOS +' Log("INSERTAMOS PROD", Colors.red) + If cant > 0 Then guardaProductoSinGestion(costoU, cant, nombre, prodId, ticketId, fecha, mesero, mesa, precioSin, tipoVenta, comensales) + End If + c.Close +End Sub + +'Inserta un producto en la tabla "pedido" y "PEDIDO_TICKET" y actualiza "cat_gunaprod". +'NO ACTUALIZA LA BANDERA DE GESTION EN LA TABLA "kmt_info". +'Si "gestion=2" entonces el sistema considera que el pedido ya se guardó y ya no se debe modificar. +Sub guardaProductoSinGestion(costoU As String, cant As String, nombre As String, prodId As String, ticketId As String, fecha As String, mesero As String, mesa As String, precioSin As String, tipoVenta As String, comensales As Int) +' If nombre.Length < 6 Then ToastMessageShow("(guardaProductoSinGestion) El nombre del producto no es valido " & nombre, True) + Log("guardaProductoSinGestion: "&prodId&", cant="&cant&", tipo="&tipoVenta&" , ticket="&ticketId&", mesa="&mesa&", comensales="&comensales) + Private c As ResultSet +' Private tablaProds As String = "cat_gunaprod2" +' If tipoVenta = "ABORDO" Then tablaProds = "cat_gunaprod" + B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_TICKET, PE_FECHA, PE_MESERO, PE_MESA, PE_COSTO_SIN, PE_TIPO) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object ((cant * costoU), costoU, cant, nombre, prodId, ticketId, fecha, mesero, mesa, precioSin, tipoVenta)) + 'Actualizamos el inventario en cat_gunaprod solo si no es RMI + B4XPages.MainPage.skmt.ExecNonQuery2($"update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? "$, Array As Object(cant, prodId)) + c = B4XPages.MainPage.skmt.ExecQuery($"select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_TICKET = '${ticketId}' and PE_TIPO = 'VENTA' and PE_MESA = '${mesa}'"$) +' Log($"select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_TICKET = '${ticketId}'"$) +' c.Position = 0 + B4XPages.MainPage.skmt.ExecNonQuery($"delete from PEDIDO_TICKET where PT_TICKET = '${ticketId}' and PT_MESA = '${mesa}' and PT_PAGO = '${tipoVenta}'"$) + Do While c.NextRow +' Log($"delete from PEDIDO_TICKET where PT_TICKET = '${ticketId}' and PT_MESA = '${mesa}' and PT_PAGO = '${tipoVenta}'"$) + B4XPages.MainPage.skmt.ExecNonQuery2("insert into PEDIDO_TICKET(PT_TICKET, PT_PAGO, PT_FECHA, PT_MESERO, PT_NOART, PT_MONTO, PT_MESA, PT_COSTO_SIN, PT_COMENSALES) VALUES (?,?,?,?,?,?,?,?,?)", Array As Object(ticketId, tipoVenta, fecha, mesero, c.GetString("CANT_CLIE"), c.GetString("TOTAL_CLIE"), mesa, c.GetString("TOTAL_CLIE_SIN"), comensales)) +' Log($"insert into PEDIDO_TICKET(PT_TICKET, PT_PAGO, PT_MESERO, PT_NOART, PT_MONTO, PT_MESA, PT_COSTO_SIN, PT_COMENSALES) VALUES (${ticketId}, ${tipoVenta}, ${mesero}, ${c.GetString("CANT_CLIE")}, ${c.GetString("TOTAL_CLIE")}, ${mesa}, ${c.GetString("TOTAL_CLIE_SIN")}, ${comensales})"$) + Loop +End Sub + +Sub agrupador() +' Private c As Cursor +' Private YA_IMPRIMIO As String +' If traeTicket <> "0" Then +' c=B4XPages.MainPage.skmt.ExecQuery("SELECT SUM(PE_FOLIO) AS FOLIO FROM PEDIDO WHERE PE_TICKET IN (Select CUENTA from cuentaa)") +' c.Position = 0 +' If c.GetString("FOLIO") <> Null And c.GetString("FOLIO") > 0 Then +' YA_IMPRIMIO = 1 +' Else +' YA_IMPRIMIO = 0 +' End If +' c.Close +' End If +'' Log($"Ya imprimio=${YA_IMPRIMIO}"$) +' B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido3") +' B4XPages.MainPage.skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = 0 where PE_FOLIO IS NULL") +' B4XPages.MainPage.skmt.ExecNonQuery("INSERT INTO PEDIDO3 (PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_TICKET, PE_USUARIO ) SELECT PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, SUM(PE_COSTO_TOT) AS PE_COSTO_TOT, PE_COSTOU, SUM(PE_CANT) As PE_CANT, PE_PRONOMBRE, PE_PROID, PE_TICKET, PE_USUARIO FROM PEDIDO WHERE PE_TICKET IN (Select CUENTA from cuentaa) GROUP BY PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTOU, PE_PRONOMBRE, PE_PROID, PE_TICKET ") +'' Log("update pedido3") +' B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FOLIO = ? WHERE PE_TICKET IN (Select CUENTA from cuentaa)", Array As Object(YA_IMPRIMIO)) +' B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido WHERE PE_TICKET IN (Select CUENTA from cuentaa)") +' B4XPages.MainPage.skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3") +' B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_FECHA = ? where PE_TICKET IN (Select CUENTA from cuentaa) and PE_FECHA IS NULL", Array As Object(traeFecha)) +End Sub + +'Trae el blob de la imagen desde la base de datos, con el ID del producto dado. +'Sub traeImgDeDB(prodId As String) As Bitmap +' Private ins As InputStream +' Private bmp As Bitmap +' Private jpeg() As Byte +'' B4XPages.MainPage.skmt.ExecQuery($"select cat_gp_img from cat_gunaprod where cat_gp_id = '${prodId}'"$) +' Private laImg As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select CAT_GP_IMG from cat_gunaprod where cat_gp_id = '${prodId}'"$) +' Do While laImg.NextRow +' jpeg = laImg.GetBlob("CAT_GP_IMG") +' ins.InitializeFromBytesArray(jpeg, 0, jpeg.Length) +' bmp.Initialize2(ins) +' Loop +' laImg.Close +' Return bmp +'End Sub + +'Regresa una lista con los meseros desde la base de datos. +Sub traeMeserosLista As List 'ignore + Private cc As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select * from cat_meseros order by ms_nombre"$) + Private items As List + items.Initialize + items.Add("SELECCIONA UN MESERO") + Do While cc.NextRow +' For i = 0 To cc.RowCount - 1 +' cc.Position = i +' lv_giro.AddSingleLine(cc.GetString("descripcion")) + items.Add(cc.GetString("MS_NOMBRE")) +' Next + Loop + cc.Close + Return items +End Sub + +'Regresa las categorias de los productos en una lista +Sub traeCategorias As List + Private c As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select distinct CAT_GP_TIPO from CAT_GUNAPROD order by CAT_GP_TIPO"$) + Private l As List + l.Initialize + Do While c.NextRow + l.Add(c.GetString("CAT_GP_TIPO")) +' Log(c.GetString("CAT_GP_CLASIF")) + Loop + Return l +End Sub + +'Regresa las subcategorias de los productos en una lista +Sub traeSubCategorias(cat As String) As List + Private c As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select distinct CAT_GP_CLASIF from CAT_GUNAPROD where CAT_GP_TIPO = '${cat}' order by CAT_GP_CLASIF"$) + Private l As List + l.Initialize + Do While c.NextRow + l.Add(c.GetString("CAT_GP_CLASIF")) +' Log(c.GetString("CAT_GP_CLASIF")) + Loop + Return l +End Sub + +'Regresa una lista con el id de los meseros desde la base de datos. +Sub traeMeserosIdLista As List 'ignore + Private cc As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select * from cat_meseros order by ms_nombre"$) + Private items As List + items.Initialize + items.Add("SELECCIONA UN MESERO") + Do While cc.NextRow +' lv_giro.AddSingleLine(cc.GetString("descripcion")) + items.Add(cc.GetString("MS_ID")) + Loop + cc.Close + Return items +End Sub + +'Regresa el mesero de la mesa dada. +Sub traeMeseroNombre(mesaId As String) As String + Private m As String = "NINGUNO" + Private c As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select IFNULL(M_MESERO, "NINGUNO") as MESERO from CAT_MESAS where M_ID = '${mesaId}'"$) + Log($"select IFNULL(M_MESERO, "NINGUNO") as MESERO from CAT_MESAS where M_ID = '${mesaId}'"$) + Do While c.NextRow + m = c.GetString("MESERO") + Loop + Return m +End Sub + +'Regresa el siguente consecutivo para el ticket. +Sub traeConsecutivoTicket(estatus As String, pago As String) As String + Private m As String = "00000" + Private sqlPago As String = $"M_PAGO = '${pago}'"$ + If pago = "PENDIENTE" Then sqlPago = $"M_PAGO is NULL"$ + If pago = "EFECTIVO" Or pago = "TARJETA" Or pago = "MULTI-TICKET" Then + Private c As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select max(PE_TICKET) as ultimo from PEDIDO where PE_TIPO = '${pago}'"$) + Else + Private c As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select max(M_TICKET) as ultimo from CAT_MESAS where ifnull(M_ESTATUS, 'CERRADA') = '${estatus}' and ${sqlPago}"$) + End If +' Log($"select max(M_TICKET) as ultimo from CAT_MESAS where ifnull(M_ESTATUS, 'CERRADA') = '${estatus}' and ${sqlPago}"$) + Do While c.NextRow + If c.GetString("ultimo") <> Null And c.GetString("ultimo") <> "null" Then m = NumberFormat2(c.GetString("ultimo"), 5, 0,0, False) + Loop +' Log(m + 1) + Return NumberFormat2(m+1, 5, 0, 0, False) +End Sub + +'Regresa el estaus de la mesa con el Id dado. +Sub traeMesaEstatus(id As String) As String + Private e As String = "CERRADA" + Private c As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select IFNULL(M_ESTATUS, "CERRADA") as estatus from CAT_MESAS where M_ID = '${id}'"$) + Do While c.NextRow + e = c.GetString("estatus") + Loop + Return e +End Sub + +Sub traeDescXefectivo As Int + Private c As ResultSet = B4XPages.MainPage.skmt.ExecQuery("select * from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'DESCUENTO X EFECTIVO'") + Private d As Int = 0 + Do While c.NextRow + d = c.GetInt("CAT_VA_VALOR") + Loop + Return d +End Sub + +'Regresa verdadero si el cierre adminstrativo esta en 1 +Sub revisaCierreAdmin As Boolean + Private c As ResultSet = B4XPages.MainPage.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("CIERRE ADMIN")) + Private cierre As Boolean = False + Do While c.NextRow + If c.GetString("CAT_VA_VALOR") = 1 Then +' B4XPages.MainPage.principal.p_transparenteCierreAdmin.BringToFront +' B4XPages.MainPage.principal.p_transparenteCierreAdmin.Visible = True + cierre = True + Else +' B4XPages.MainPage.principal.p_transparenteCierreAdmin.Visible = False + End If + Loop + Return cierre +End Sub + +'Change CheckBox colors +'Sub SetButtonTintList(View As View, Disabled As Int, Enabled As Int) +' Dim States(2,1) As Int +' Dim sd As StateListDrawable 'ignore +' States(0, 0) = sd.State_Enabled +' States(1, 0) = sd.State_Disabled +' Dim Color(2) As Int = Array As Int(Enabled, Disabled) +' Dim CSL As JavaObject +' CSL.InitializeNewInstance("android.content.res.ColorStateList",Array(States,Color)) +' Dim jo As JavaObject +' jo.InitializeStatic("android.support.v4.widget.CompoundButtonCompat") +' jo.RunMethod("setButtonTintList", Array(View, CSL)) +'End Sub + +'Regresa el texto dado, rellenado a la cantidad de espacios especificados. +Sub alineaDerecha(texto As String, tamano As Int, relleno As String) As String + Private blanco As String = relleno + tamano = tamano - texto.Length - 1 + For E = 0 To tamano - 1 + blanco = relleno & blanco + Next +' Log(blanco & texto) + Return blanco & texto +End Sub + +'Regresa una cadena de espacios del tamaño especificado +Sub rellenaHasta(tamano As Int) As String + Private relleno As String = "" + For i = 0 To tamano - 1 + relleno = relleno & " " + Next + Return relleno +End Sub + +'Pone el panel especificado en la posicion 0,0 y lo hace del tamaño de la vista especificada. +Sub muestraPane(p As Pane, root As B4XView) + p.Top = 0 : p.left = 0 : p.SetSize(root.Width, root.Height) +End Sub + +'CAT_GUNAPRODS, CAT_MESAS y CAT_MESEROS +'1782 +'10.0.0.106 +'DBKMT +'LANTER +'LANTERD2023M +'sql.selectProds_Lanter = Select * from cat_gunaprod +'sql.selectMesas_Lanter = Select * from cat_mesas +'sql.selectMeseros_Lanter = Select * from cat_meseros + +'CREATE TABLE CAT_GUNAPROD (CAT_GP_CODPROMO TEXT, CAT_GP_INICIATIVA TEXT, CAT_GP_TIPOPROD TEXT, CAT_GP_DEV TEXT, CAT_GP_ALMACEN NUMERIC, CAT_GP_ID TEXT, CAT_GP_NOMBRE TEXT, CAT_GP_IMP1 TEXT, CAT_GP_IMP2 TEXT, CAT_GP_PRECIO TEXT, CAT_GP_CLASIF TEXT, CAT_GP_STS TEXT, CAT_GP_TIPO TEXT, CAT_GP_SUBTIPO TEXT, CAT_GP_IMG BLOB, CAT_PT_DESC TEXT, CAT_PS_DESC TEXT, CAT_GP_FECHA TEXT, CAT_GP_FECHA_MOD TEXT) +'CREATE TABLE "CAT_MESAS"(M_ID TEXT, M_NUMERO TEXT, M_NOMBRE TEXT, M_ZONA TEXT, M_ESTATUS TEXT, M_MESERO TEXT, M_PAGO TEXT, M_TICKET TEXT, M_COMENSALES INTEGER) +'CREATE TABLE CAT_MESEROS(MS_ID TEXT, MS_NOMBRE TEXT, MS_MESAS_ASIGNADAS TEXT) \ No newline at end of file diff --git a/B4J/lanterna.b4j b/B4J/lanterna.b4j new file mode 100644 index 0000000..1073836 --- /dev/null +++ b/B4J/lanterna.b4j @@ -0,0 +1,100 @@ +AppType=JavaFX +Build1=Default,b4j.example +File1=candado.png +File10=logolanter_192x192.png +File11=logolanter2.bmp +File12=logolanternegro.bmp +File13=logolanternegro.png +File14=logolanternegro2.bmp +File15=MainPage.bjl +File16=mesasItem.bjl +File17=usuario.png +File2=engrane.png +File3=engrane_fondoblanco.png +File4=engranes.png +File5=errorLog.db +File6=kmt.db +File7=login.bjl +File8=logolanter.bmp +File9=logolanter.png +FileGroup1=Default Group +FileGroup10=Default Group +FileGroup11=Default Group +FileGroup12=Default Group +FileGroup13=Default Group +FileGroup14=Default Group +FileGroup15=New Group +FileGroup16=Default Group +FileGroup17=Default Group +FileGroup2=Default Group +FileGroup3=Default Group +FileGroup4=Default Group +FileGroup5=Default Group +FileGroup6=Default Group +FileGroup7=Default Group +FileGroup8=Default Group +FileGroup9=Default Group +Group=Default Group +Library1=b4xpages +Library10=jstringutils +Library11=wobblemenu +Library12=xcustomlistview +Library2=byteconverter +Library3=compressstrings +Library4=jcore +Library5=jfx +Library6=jokhttputils2 +Library7=jrandomaccessfile +Library8=json +Library9=jsql +Module1=|relative|..\B4XMainPage +Module2=C_Principal +Module3=DBRequestManager +Module4=Subs +NumberOfFiles=17 +NumberOfLibraries=12 +NumberOfModules=4 +Version=10 +@EndOfDesignText@ +#Region Project Attributes + #MainFormWidth: 600 + #MainFormHeight: 600 + #AdditionalJar: sqlite-jdbc-3.7.2.jar +#End Region + +Sub Process_Globals + Private fx As JFX + Private MainForm As Form +End Sub + +Sub AppStart (Form1 As Form, Args() As String) + MainForm = Form1 +' Log(MainForm.Width) + MainForm.Show + Dim PagesManager As B4XPagesManager + PagesManager.Initialize(MainForm) +End Sub + +'Template version: B4J-1.0 +#Region Delegates +Sub MainForm_FocusChanged (HasFocus As Boolean) + B4XPages.Delegate.MainForm_FocusChanged(HasFocus) +End Sub + +Sub MainForm_Resize (Width As Double, Height As Double) + B4XPages.Delegate.MainForm_Resize(Width, Height) +End Sub + +Sub MainForm_Closed + B4XPages.Delegate.MainForm_Closed +End Sub + +Sub MainForm_CloseRequest (EventData As Event) + B4XPages.Delegate.MainForm_CloseRequest(EventData) +End Sub + +Public Sub MainForm_IconifiedChanged (Iconified As Boolean) + B4XPages.Delegate.MainForm_IconifiedChanged(Iconified) +End Sub +#End Region + diff --git a/B4J/lanterna.b4j.meta b/B4J/lanterna.b4j.meta new file mode 100644 index 0000000..5682667 --- /dev/null +++ b/B4J/lanterna.b4j.meta @@ -0,0 +1,18 @@ +ModuleBookmarks0= +ModuleBookmarks1= +ModuleBookmarks2= +ModuleBookmarks3= +ModuleBookmarks4= +ModuleBreakpoints0= +ModuleBreakpoints1= +ModuleBreakpoints2= +ModuleBreakpoints3= +ModuleBreakpoints4= +ModuleClosedNodes0= +ModuleClosedNodes1=40,41 +ModuleClosedNodes2= +ModuleClosedNodes3= +ModuleClosedNodes4= +NavigationStack=Main,Process_Globals,8,0,B4XMainPage,b_cerrarApp_Click,620,0,B4XMainPage,Class_Globals,96,0,Subs,revisaMaxPromosProdsFijosPorInventario2,1008,0,Visual Designer,login.bjl,-100,6,B4XMainPage,b_cerrarCerrar_Click,651,0,B4XMainPage,b_abrirMesa_Click,586,0,B4XMainPage,lv_categorias_MouseClicked,607,0,B4XMainPage,lv_categorias_SelectedIndexChanged,605,6,B4XMainPage,llenaProdsLL,530,0,B4XMainPage,p_mesasItem_MouseClicked,524,0 +SelectedBuild=0 +VisibleModules=1,4,2,3 diff --git a/B4J/lanterna.meta b/B4J/lanterna.meta new file mode 100644 index 0000000..33c33ea --- /dev/null +++ b/B4J/lanterna.meta @@ -0,0 +1,9 @@ +ModuleBookmarks0= +ModuleBookmarks1= +ModuleBreakpoints0= +ModuleBreakpoints1= +ModuleClosedNodes0=1,4 +ModuleClosedNodes1=1 +NavigationStack=Main,MainForm_IconifiedChanged,37,0,Main,AppStart,14,6,B4XMainPage,Button1_Click,19,0,B4XMainPage,Initialize,9,0,B4XMainPage,B4XPage_Created,18,0,B4XMainPage,Class_Globals,7,0 +SelectedBuild=0 +VisibleModules=1 diff --git a/B4XMainPage.bas b/B4XMainPage.bas new file mode 100644 index 0000000..31f3804 --- /dev/null +++ b/B4XMainPage.bas @@ -0,0 +1,681 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=9.85 +@EndOfDesignText@ +#Region Shared Files + 'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True + '########################################################################################################### + '###################### PULL ############################################################# + 'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=git&Args=pull + '########################################################################################################### + '###################### PUSH ############################################################# + 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=github&Args=..\..\ + '########################################################################################################### + '###################### PUSH TORTOISE GIT ######################################################### + 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=TortoiseGitProc&Args=/command:commit&Args=/path:"./../../"&Args=/closeonend:2 + '########################################################################################################### +#End Region + +'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip + +Sub Class_Globals + Private Root As B4XView + Private xui As XUI + Public login As B4XMainPage + Public principal As C_Principal + Private i_logo As ImageView + Private p_configuracion As Pane + Private p_login As Pane + Private b_regresar As Button + Private b_entrar As Button + Private b_envioBD As Button + Private b_server As Button + Private ImageView4 As ImageView + Private ImageView2 As ImageView + Private Panel3 As Pane + Private Label1 As Label + Private i_conf As B4XView +' Private i_conf As ImageView + Private b_cargaProductos As Button + Private ListView1 As ListView + Private E_SERVER As TextField + Dim reqManager As DBRequestManager + Private l_version As Label + Private p_botones As Pane + Private Label3 As Label + Private p_server As Pane + Dim atrasPresionado As Boolean = False + Dim skmt As SQL + Dim DBReqServer As String = "http://keymon.lat:1782" + Dim logger As Boolean = True + Dim ticketActual, mesaActual, meseroActual, comensalesActuales, totalActual As String + Private i_password As ImageView + Private pass As TextField + Private user As TextField + Private i_usuario As ImageView + Private Panel1 As Pane + Private Panel2 As Pane + Private lv_server As ListView + Private p_conf2 As Pane + Private WobbleMenu1 As WobbleMenu + Private p_mesas As Pane + Private clv_mesas As CustomListView + Private l_mesas As Label + Private p_mesas2 As Pane + Dim listaProds, listaHints, listaHintsM, list_prodsPedido As List + Dim listaFormasDePagoCB, listaFormaDePago, listaMontoDePago, listaTickets As List + Dim fx As JFX + Dim reiniciarlistaProds As Boolean = False 'ignore + Private p_mesasItem As Pane + Private l_estatus As Label + Private l_mesaX As Label + Dim formasDePago As Int = 1 + Dim tipoPago As String = "VENTA" + Dim nivelActual As String = "VENTA" + Private lv_categorias As ListView + Private p_mesa As Pane + Private p_renombraVarios As Pane + Private l_mesa As Label + Private b_abrirMesa As Button + Private p_mesaCampos As Pane + Private p_mesaAbierta As Pane + Private l_comensalesAbierta As Label + Private l_meseroAbierta As Label + Private l_comensalesAbierta2 As Label + Private l_meseroAbierta2 As Label + Private b_mesaEditar As Button + Private clv_prods_ll As CustomListView + Private p_botonesProds As Pane + Private b_mesaCerrar As Button + Private b_imprimirTicket As Button + Private b_regresarProds As Button + Private cb_comensales As ComboBox + Private cb_mesero As ComboBox + Private b_back As Button + Private p_mesa2 As Pane + Private p_cerrarApp As Pane + Private b_cerrarApp As Button + Private l_cerrarApp As Label + Private p_cerrarApp As Pane + Private b_cerrarApp As Button + Private b_cerrarCerrar As Button +End Sub + +Public Sub Initialize +' B4XPages.GetManager.LogEvents = True +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + B4XPages.GetManager.LogEvents = True + If Not(File.Exists(File.DirApp, "kmt.db")) Then + File.Copy(File.DirAssets, "kmt.db", File.DirApp, "kmt.db") + Log("copiamos kmt.db de "&File.DirAssets & " a " & File.DirApp) + End If + If Not(skmt.IsInitialized) Then + skmt.InitializeSQLite(File.DirApp, "kmt.db", True) + End If + Subs.revisaBD + Root = Root1 + Root.LoadLayout("login") + login.Initialize + B4XPages.AddPage("Login", login) + principal.Initialize + B4XPages.AddPage("Principal", principal) + Subs.agregaColumna("cat_gunaprod", "CAT_PT_DESC", "TEXT") + Subs.agregaColumna("cat_gunaprod", "CAT_PS_DESC", "TEXT") + Subs.agregaColumna("cat_gunaprod", "CAT_PS_DESC", "TEXT") + Subs.agregaColumna("cat_gunaprod", "CAT_GP_FECHA", "TEXT") + Subs.agregaColumna("cat_gunaprod", "CAT_GP_FECHA_MOD", "TEXT") + skmt.ExecNonQuery("delete from cuentaa") + skmt.ExecNonQuery("insert into cuentaa (cuenta) values ('123456')") + skmt.ExecNonQuery("delete from cat_almacen") + skmt.ExecNonQuery("insert into cat_almacen (id_almacen) values ('1')") + l_version.Text = "3.03.13" 'Application.VersionName +' p_configuracion.Height = Root.Height : p_configuracion.width = Root.width + cb_comensales.Items.AddAll(Array As String(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)) + cb_mesero.Items.AddAll(Subs.traeMeserosLista) + reqManager.Initialize(Me, DBReqServer) +' Subs.centraEtiqueta(Label3, p_configuracion.Width) +' Subs.centraPanel(p_server, p_configuracion.Width) +' Subs.centraPanel(p_botones, p_configuracion.Width) + i_logo.Left = (Root.Width / 2) - (i_logo.Width / 2) +' Subs.centraPanel(Panel3, p_configuracion.Width) + Private x As ResultSet = skmt.ExecQuery($"select * from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'DESCUENTO X EFECTIVO'"$) +' Log(x.IsInitialized) + If Not(x.IsInitialized) Then 'Insertamos el descuento para efectivo por default. + skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("DESCUENTO X EFECTIVO","10")) + End If + Subs.centraImagen(i_logo, Root.Width) + Subs.centraPanel(Panel3, Root.Width) + i_conf.Left = Root.Width - 100dip + p_login.SetSize(Root.Width, Root.Height) + Subs.centraPanel(p_conf2, Root.Width) + p_mesas.Top = 0 : p_mesas.left = 0 : p_mesas.SetSize(Root.Width, Root.Height) + WobbleMenu1.SetVisible(False, False) + b_back.Visible = False +End Sub + +Private Sub B4XPage_CloseRequest As ResumableSub + ' BACK key pressed + 'Return True to close, False to cancel + Log("BACK") +' If p_mesa.Visible Then +' p_mesa.Visible = False +' p_mesas.Visible = True +' Else If p_mesas.Visible Then +' p_mesas.Visible = False +' b_back.Visible = False +' else if p_configuracion.Visible Then +' p_configuracion.Visible = False +' Return False +' Else + Subs.centraPanel(p_cerrarApp, Root.Width) + p_cerrarApp.Visible = True +' If atrasPresionado Then ExitApplication 'Solo salimos de la aplicación si se presiona 'Atras' 2 veces seguidas. + atrasPresionado = True +' End If + Return False +End Sub + +Sub B4XPage_Resize (Width As Double, Height As Double) +' Log($"${Width}|${Height}"$) + p_configuracion.Top = 0 : p_configuracion.left = 0 + p_login.Top = 0 : p_login.left = 0 + p_login.SetSize(Width, Height) + p_configuracion.SetSize(Width, Height) + p_mesas.SetSize(Width, Height) + Subs.centraPanel(Panel3, Root.Width) + Subs.muestraPane(p_mesa, Root) + Subs.muestraPane(p_mesas, Root) + Subs.centraPanel(p_mesas2, Root.Width) + Subs.centraPanel(p_mesa2, Width) + Subs.centraImagen(i_logo, Root.Width) + i_conf.Left = Root.Width - 100dip + Subs.centraPanel(p_conf2, Root.Width) +' p_login.PrefWidth = Root.Width +' p_login.SetSize(Width, Height) +' p_login.prefHeight = Root.Height +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. + +Private Sub i_logo_Click + +End Sub + +Private Sub b_regresar_Click + p_configuracion.Visible = False +' Subs.panelVisible(p_login, 0, 0) + p_login.Visible = True +End Sub + +Private Sub b_entrar_Click +' B4XPages.ShowPage("principal") +' Log(3) + b_back.Visible = True + Subs.centraPanel(p_mesas2, Root.Width) + p_mesas.Visible = True + Subs.muestraPane(p_mesas, Root) + LlenaMesas(Null, Null) +End Sub + +Private Sub b_server_Click + If E_SERVER.Text <> "" Then + DBReqServer = E_SERVER.text + skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SERVER")) + skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER", DBReqServer)) + p_configuracion.Visible = False + reqManager.Initialize(Me, DBReqServer) + reqManager.Initialize(Me, DBReqServer) + p_configuracion.Visible = False + p_login.Visible = True + Else +' ToastMessageShow("Por favor ingrese la direccion del servidor", True) + End If +End Sub + +Private Sub b_envioBD_Click + +End Sub + +Private Sub i_conf_Click +' ListView1.clear + + Dim Label1 As Label +' Label1 = ListView1.SingleLineLayout.Label +' Label1 = ListView1. +' Label1.TextSize = 20 +' Label1.TextColor = Colors.Black +' ListView1.AddSingleLine("http://keymon.lat:1782") +' p_configuracion.Width = Root.Width +' p_configuracion.Height = Root.Height +' p_configuracion.BringToFront +' Subs.panelVisible(p_configuracion, 0, 0) +End Sub + +Private Sub b_cargaProductos_Click + Log(DBReqServer) + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "selectProds_Lanter" + reqManager.ExecuteQuery(cmd , 0, "selectProds", 0) + cmd.Initialize + + cmd.Name = "selectMesas_Lanter" + reqManager.ExecuteQuery(cmd , 0, "selectMesas", 0) + + cmd.Initialize + cmd.Name = "selectMeseros_Lanter" + reqManager.ExecuteQuery(cmd , 0, "selectMeseros", 0) +End Sub + +Private Sub ListView1_ItemClick (Position As Int, Value As Object) + DBReqServer = Value + E_SERVER.Text = Value +End Sub + +Sub JobDone(Job As HttpJob) + Log("JOBDONE MAINPAGE") + If Job.Tag.As(String).StartsWith("_KMS_") Then Job.tag = Job.Tag.As(String).SubString(16) + If Job.Success = False Then +' ToastMessageShow("Error: " & Job.ErrorMessage, True) + Else + If logger Then Log("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size) 'Mod por CHV - 211110 + If Job.JobName = "DBRequest" Then + Dim result As DBResult = reqManager.HandleJob(Job) + If result.Tag = "selectProds" Then 'query tag + skmt.ExecNonQuery("delete from cat_gunaprod") + skmt.BeginTransaction + For Each records() As Object In result.Rows + Dim CAT_GP_ID As String = records(result.Columns.Get("CAT_GP_ID")) + Dim CAT_GP_NOMBRE As String = records(result.Columns.Get("CAT_GP_NOMBRE")) + Dim CAT_GP_PRECIO As String = records(result.Columns.Get("CAT_GP_PRECIO")) + Dim CAT_GP_ALMACEN As String = 10000 'records(result.Columns.Get("CAT_GP_ALMACEN")) + Dim CAT_GP_IMG() As Byte = records(result.Columns.Get("CAT_GP_IMG")) + Dim CAT_GP_FECHA As String = records(result.Columns.Get("CAT_GP_FECHA")) + Dim CAT_GP_FECHA_MOD As String = records(result.Columns.Get("CAT_GP_FECHA_MOD")) + Dim CAT_GP_CLASIF As String = records(result.Columns.Get("CAT_GP_CLASIF")) + skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_PRECIO,CAT_GP_ALMACEN,CAT_GP_IMG,CAT_GP_FECHA,CAT_GP_FECHA_MOD, CAT_GP_CLASIF) VALUES (?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_PRECIO,CAT_GP_ALMACEN,CAT_GP_IMG,CAT_GP_FECHA,CAT_GP_FECHA_MOD,CAT_GP_CLASIF)) + Next + For v = 1 To 20 'Agregamos productos varios (editables) + skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_PRECIO,CAT_GP_ALMACEN,CAT_GP_IMG,CAT_GP_FECHA,CAT_GP_FECHA_MOD, CAT_GP_CLASIF) VALUES (?,?,?,?,?,?,?,?)", Array As Object ($"VAR${NumberFormat2(v, 2, 0, 0, False)}"$,$"Alimentos Varios ${NumberFormat2(v, 2, 0, 0, False)}"$,"1","10000",Null,"2024-02-04 17:00:00","2024-02-04 17:00:00","Varios")) + Next + skmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!! + End If + + If result.Tag = "selectMesas" Then 'query tag + skmt.ExecNonQuery("delete from CAT_MESAS") + skmt.BeginTransaction + For Each records() As Object In result.Rows + Dim M_ID As String = records(result.Columns.Get("M_ID")) + Dim M_NOMBRE As String = records(result.Columns.Get("M_NOMBRE")) + Dim M_NUMERO As String = records(result.Columns.Get("M_NUMERO")) + Dim M_ZONA As String = records(result.Columns.Get("M_ZONA")) + skmt.ExecNonQuery2("INSERT INTO CAT_MESAS(M_ID, M_NUMERO, M_NOMBRE, M_ZONA) VALUES (?,?,?,?)", Array As Object (M_ID, M_NUMERO, M_NOMBRE, M_ZONA)) + Next + skmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!! + End If + + If result.Tag = "selectMeseros" Then 'query tag + skmt.ExecNonQuery("delete from CAT_MESEROS") + skmt.BeginTransaction + For Each records() As Object In result.Rows + Dim MS_ID As String = records(result.Columns.Get("MS_ID")) + Dim MS_NOMBRE As String = records(result.Columns.Get("MS_NOMBRE")) + Dim MS_MESAS_ASIGNADAS As String = records(result.Columns.Get("MS_MESAS_ASIGNADAS")) + skmt.ExecNonQuery2("INSERT INTO CAT_MESEROS(MS_ID, MS_NOMBRE, MS_MESAS_ASIGNADAS) VALUES (?,?,?)", Array As Object (MS_ID, MS_NOMBRE, MS_MESAS_ASIGNADAS)) + Next + skmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!! +' If B4XPages.MainPage.principal.cb_mesero.IsInitialized Then B4XPages.MainPage.principal.cb_mesero.SetItems(Subs.traeMeserosLista) + End If + End If + End If +' ToastMessageShow("¡Información cargada!", False) + Job.Release +End Sub + +Private Sub b_entrar_LongClick + +End Sub + +Private Sub user_TextChanged (Old As String, New As String) + If New = "KMTS1" Then i_conf.Visible = True Else i_conf.Visible = False +End Sub + +Private Sub i_password_MouseClicked (EventData As MouseEvent) + +End Sub + +Private Sub i_conf_MouseClicked (EventData As MouseEvent) + p_configuracion.Top = 0 : p_configuracion.left = 0 + p_configuracion.Visible = True + lv_server.Items.Clear + lv_server.Items.Add("http://keymon.lat:1782") + Private c As ResultSet = skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SERVER")) + Do While c.NextRow + E_SERVER.Text = c.GetString("CAT_VA_VALOR") + Loop +End Sub + +Private Sub lv_server_SelectedIndexChanged(Index As Int) +' Log($"LV clicked ${Index}"$) +' Log(lv_server.SelectedItem) +End Sub + +Private Sub lv_server_MouseClicked (EventData As MouseEvent) +' Log($"LV mouse clicked ${EventData}"$) + Dim jo As JavaObject = EventData + Dim target As JavaObject = jo.RunMethod("getTarget", Null) +' Log(GetType(target)) + If GetType(target) = "com.sun.javafx.scene.control.LabeledText" Then 'Traemos el valor de la opcion seleccionada. + Dim text As String = target.RunMethod("getText", Null) +' Log($"LV mouse clicked |${text}|"$) + E_SERVER.Text = text + End If +End Sub + +Private Sub WobbleMenu1_Tab1Click + +End Sub + +Private Sub clv_mesas_ItemClick (Index As Int, Value As Object) + Log(Index) +End Sub + +Sub LlenaMesas(p As ResultSet, extra As String) 'ignore + Private o As ResultSet = skmt.ExecQuery("select count(PT_TICKET) as ordenes from PEDIDO_TICKET where PT_PAGO <> 'VENTA'") +' o.Position = 0 + Private cuantasOrdenes As Int = 0 + Do While o.NextRow + cuantasOrdenes = o.GetInt("ordenes") + Loop +' Log(cuantasOrdenes) + If cuantasOrdenes > 0 Then WobbleMenu1.SetBadge(3, cuantasOrdenes, fx.Colors.From32Bit(0xFFFFFFFF), fx.Colors.From32Bit(0xFFFF0000)) Else WobbleMenu1.RemoveBadge(3) + Dim p As ResultSet = skmt.ExecQuery($"select *, IFNULL(M_ESTATUS, 'CERRADA') as ESTATUS2, IFNULL(M_MESERO, 'NINGUNO') as MESERO, IFNULL(M_COMENSALES, 0) as COMENSALES from cat_mesas"$) +' Log(p.RowCount) +' PCLVM.Commit + clv_mesas.Clear + Private m_mesas As Map + m_mesas.Initialize +' clv_mesas.GetBase.SetLayoutAnimated(0,0,0, + Do While p.NextRow +' Log($"${p.GetString("M_ID")} - ${p.GetString("M_NOMBRE")} - ${p.GetString("ESTATUS2")}"$) + Private SUBTOTAL2 As String = "0" + Private NO_ARTS2 As String = "0" +' Log(p.GetString("ESTATUS2")) + If p.GetString("ESTATUS2") = "ABIERTA" Then +' Log($"PT_TICKET = '${p.GetString("M_TICKET")}' and PT_MESA = '${p.GetString("M_ID")}"$) + Private pt As ResultSet = skmt.ExecQuery($"select ifnull(sum(PT_MONTO),0) as SUBTOTAL, ifnull(sum(PT_NOART), 0) as NO_ARTS from PEDIDO_TICKET where PT_TICKET = '${p.GetString("M_TICKET")}' and PT_MESA = '${p.GetString("M_ID")}' and PT_PAGO = 'VENTA'"$) + Do While pt.NextRow + SUBTOTAL2 = pt.GetString("SUBTOTAL") + NO_ARTS2 = pt.GetString("NO_ARTS") + Loop + End If +' Log($"${SUBTOTAL2}, ${NO_ARTS2}"$) + Dim tempMap As Map = CreateMap("id":p.GetString("M_ID"), "numero":p.GetString("M_NUMERO"), "nombre":p.GetString("M_NOMBRE"), "zona":p.GetString("M_ZONA"), "ticket":p.GetString("M_TICKET"), "estatus":p.GetString("ESTATUS2"), "mesero":p.GetString("MESERO"), "comensales":p.GetString("COMENSALES"), "subtotal":SUBTOTAL2, "articulos":NO_ARTS2) +' m_mesas.Put(p.GetString("M_ID"), tempMap) + Private Pnl As B4XView = xui.CreatePanel("") + Pnl.SetLayoutAnimated(0, 0, 0, clv_mesas.AsView.Width, 80dip) + clv_mesas.Add(Pnl, tempMap) +' listaHintsM.Add($"Mesa ${p.GetString("M_ID")}"$) + Loop + p.Close +' PCLVM.B4XSeekBar1.MaxValue = clv_mesas.Size +' PCLVM.B4XSeekBar1.MinValue = 0 +' PCLVM.B4XSeekBar1.Interval = clv_mesas.Size/20 +' PCLVM.B4XSeekBar1.Value = clv_mesas.Size +' PCLVM.B4XSeekBar1.Update + reiniciarlistaProds = False +End Sub + +Private Sub clv_mesas_VisibleRangeChanged (FirstIndex As Int, LastIndex As Int) +' Log($"clv_mesa_VisibleRangeChanged : ${FirstIndex}, ${LastIndex} "$) + Dim ExtraSize As Int = 30 'List size + Private m As Map + For i = Max(0, FirstIndex - ExtraSize) To Min(LastIndex + ExtraSize, clv_mesas.Size - 1) + Dim Pnl As B4XView = clv_mesas.GetPanel(i) + m = clv_mesas.GetValue(i) + If i > FirstIndex - ExtraSize And i < LastIndex + ExtraSize Then + If Pnl.NumberOfViews = 0 Then 'Add each item/layout to the list/main layout + Pnl.LoadLayout("mesasItem") +' p_mesasItem.Width = Root.Width * 0.99 +' l_mesaX.SetTextSizeAnimated(0, 13) + l_estatus.text = "DISPONIBLE" + l_mesaX.TextSize = 16 + l_estatus.Left = clv_mesas.AsView.Width - 111dip + If m.Get("estatus") = "ABIERTA" Then l_estatus.Text = "ABIERTA" +' Log(m) + p_mesasItem.PrefHeight = 80dip + If l_estatus.text = "ABIERTA" Then + l_mesaX.Text = $"Mesa ${m.Get("id")}${CRLF}Comensales ${m.Get("comensales")} - Mesero ${m.Get("mesero")}${CRLF}Subtotal. $${NumberFormat2(m.Get("subtotal"), 1,2,2,True)} - Articulos: ${m.Get("articulos")}"$ + Else + l_mesaX.Text = $"Mesa ${m.Get("id")}"$ + End If +' Log(p_mesasItem.As(B4XView).GetView(0).As(Label).text) + l_mesaX.Tag = m + p_mesasItem.Tag = m + p_mesasItem.PrefHeight = 130dip + End If + Else 'Not visible + ' If Pnl.NumberOfViews > 0 Then + ' Pnl.RemoveAllViews 'Remove none visable item/layouts from the list/main layout + ' End If + End If + Next +End Sub + +Sub muestraCats + Private lasCats As List = Subs.traeCategorias + nivelActual = "Cats" + lv_categorias.items.Clear + For cat = 0 To lasCats.Size - 1 + lv_categorias.Items.add(lasCats.get(cat)) + Next +End Sub + +'Entramos a la mesa seleccionada. +Private Sub p_mesasItem_MouseClicked(EventData As MouseEvent) + Subs.muestraPane(p_mesa, Root) + p_mesa.Visible = True +' Subs.centraEtiqueta(l_mesa, Root.Width) +' Subs.centraPanel(p_mesaCampos, Root.Width) +' Subs.centraBoton(b_abrirMesa, Root.Width) + Subs.centraPanel(p_mesa2, Root.Width) + listaFormasDePagoCB.Initialize + listaFormaDePago.Initialize + listaMontoDePago.Initialize + listaTickets.Initialize + formasDePago = 1 + tipoPago = "VENTA" + muestraCats + clv_prods_ll.AsView.Visible = False + lv_categorias.Visible = True +' Log(Sender.As(Panel).tag) + b_abrirMesa.Text = "Abrir Mesa" +' Subs.panelVisible(p_mesa, 0, 0) + Private m As Map = Sender.As(Pane).tag + mesaActual = m.Get("id") + meseroActual = m.Get("mesero") + ticketActual = m.Get("ticket") + comensalesActuales = m.Get("comensales") + totalActual = m.Get("subtotal") + l_mesa.Text = $"MESA NO. ${m.Get("id")}"$ +' Log(m) + b_mesaCerrar.Tag = m + skmt.ExecNonQuery("delete from cuentaa") + skmt.ExecNonQuery($"insert into cuentaa (cuenta) values ('${m.Get("ticket")}')"$) + llenaProdsLL(Null, Null) + p_mesas.Visible = False + cb_mesero.SelectedIndex = 0 +' cb_pago.SelectedIndex = 0 + cb_comensales.SelectedIndex = 0 +' Private mesero As String = Subs.traeMesero(m.Get("id")) + If m.Get("mesero") <> "NINGUNO" Then cb_mesero.SelectedIndex = cb_mesero.Items.IndexOf(m.Get("mesero")) + If m.Get("comensales") <> "0" Then cb_comensales.SelectedIndex = cb_comensales.Items.IndexOf(m.Get("comensales")) +' Log(Subs.traeMesaEstatus(m.Get("id"))) + If Subs.traeMesaEstatus(m.Get("id")) = "CERRADA" Then + p_mesaCampos.Visible = True + b_abrirMesa.Visible = True + p_mesaAbierta.Visible = False + Else + p_mesaCampos.Visible = False + b_abrirMesa.Visible = False + p_mesaAbierta.Visible = True +' p_mesaAbierta.BringToFront + l_meseroAbierta2.Text = m.Get("mesero") + l_comensalesAbierta2.Text = m.Get("comensales") + End If + + Private tm As Map = CreateMap("ticket":m.Get("ticket"), "pago":tipoPago) + listaTickets.Initialize + listaTickets.Add(tm) 'Agregamos el ticket y pago a la lista para imprimir el ticket con estos datos al llamar b_imprimirTicket_Click +End Sub + +Sub llenaProdsLL(p As ResultSet, extra As String) + +End Sub + +Private Sub b_regresarProds_Click + +End Sub + +Private Sub b_imprimirTicket_Click + +End Sub + +Private Sub b_mesaCerrar_Click + +End Sub + +Private Sub clv_prods_ll_ItemClick (Index As Int, Value As Object) + +End Sub + +Private Sub clv_prods_ll_VisibleRangeChanged (FirstIndex As Int, LastIndex As Int) + +End Sub + +Private Sub b_mesaEditar_Click + +End Sub + +Private Sub b_abrirMesa_Click + If cb_mesero.SelectedIndex <> 0 Then + Private c As ResultSet = skmt.ExecQuery($"select M_ESTATUS from CAT_MESAS where M_ID = '${mesaActual}' and M_ESTATUS = 'ABIERTA'"$) + Private cont As Int = 0 + Do While c.NextRow + cont = cont + 1 + skmt.ExecNonQuery($"update CAT_MESAS set M_MESERO = '${cb_mesero.Value}', M_COMENSALES = '${cb_comensales.value}' where M_ID = '${mesaActual}'"$) + Log($"update CAT_MESAS set M_MESERO = '${cb_mesero.value}', M_COMENSALES = '${cb_comensales.value}' where M_ID = '${mesaActual}'"$) + Loop + If cont = 0 Then + ticketActual = Subs.traeConsecutivoTicket("ABIERTA", "PENDIENTE") + skmt.ExecNonQuery($"update CAT_MESAS set M_TICKET = '${Subs.traeConsecutivoTicket("ABIERTA", "PENDIENTE")}', M_ESTATUS = 'ABIERTA', M_MESERO = '${cb_mesero.value}', M_COMENSALES = '${cb_comensales.value}' where M_ID = '${mesaActual}'"$) +' Log($"update CAT_MESAS set M_TICKET = '${Starter.ticketActual}', M_ESTATUS = 'ABIERTA', M_MESERO = '${cb_mesero.SelectedItem}', M_COMENSALES = '${cb_comensales.SelectedItem}' where M_ID = '${Starter.mesaActual}'"$) + End If + meseroActual = cb_mesero.value + comensalesActuales = cb_comensales.value + skmt.ExecNonQuery($"delete from usuarioa"$) + skmt.ExecNonQuery($"insert into usuarioa (usuario) values ('${cb_mesero.value}')"$) + llenaProdsLL(Null, Null) + l_comensalesAbierta2.Text = cb_comensales.value + l_meseroAbierta2.Text = cb_mesero.value + p_mesaCampos.Visible = False + b_abrirMesa.Visible = False + p_mesaAbierta.Visible = True + Else +' ToastMessageShow("Es necesario seleccionar un mesero", False) + End If +End Sub + +Private Sub lv_categorias_SelectedIndexChanged(Index As Int) + Private selected As String = lv_categorias.SelectedItem + Log(selected) + If selected <> "null" Then + If nivelActual = "Cats" Then + Private lasCats As List = Subs.traeSubCategorias(selected) + Log(lasCats) + nivelActual = "SubCats" + lv_categorias.Items.Clear + For cat = 0 To lasCats.Size - 1 + Log(lasCats.get(cat)) + lv_categorias.items.Add(lasCats.get(cat)) + Next + Else + Log(99) + lv_categorias.Visible = False + clv_prods_ll.AsView.Visible = True + Private c As ResultSet = skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD, CAT_GP_IMG from cat_gunaprod where CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' and CAT_GP_CLASIF = '${selected}' order by CAT_GP_NOMBRE"$) + llenaProdsLL(c, Null) + End If + End If + +End Sub + +Private Sub lv_categorias_MouseClicked (EventData As MouseEvent) + ' Log("ITEM CLICKED") + +' Dim jo As JavaObject = EventData +' Dim target As JavaObject = jo.RunMethod("getTarget", Null) +'' Log(GetType(target)) +' If GetType(target) = "com.sun.javafx.scene.control.LabeledText" Then 'Traemos el valor de la opcion seleccionada. +' Dim text As String = target.RunMethod("getText", Null) +' Log($"LV mouse clicked |${text}|"$) +'' E_SERVER.Text = text +' End If + + +' If nivelActual = "Cats" Then +' Private lasCats As List = Subs.traeSubCategorias(Value) +' nivelActual = "SubCats" +' lv_categorias.Clear +' For cat = 0 To lasCats.Size - 1 +' lv_categorias.AddSingleLine(lasCats.get(cat)) +' Next +' Else +' lv_categorias.Visible = False +' clv_prods_ll.AsView.Visible = True +' Private c As ResultSet = skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD, CAT_GP_IMG from cat_gunaprod where CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' and CAT_GP_CLASIF = '${Value}' order by CAT_GP_NOMBRE"$) +' llenaProdsLL(c, Null) +' End If +End Sub + +Private Sub cb_comensales_SelectedIndexChanged(Index As Int, Value As Object) + +End Sub + +Private Sub cb_mesero_SelectedIndexChanged(Index As Int, Value As Object) + Log(cb_mesero.SelectedIndex) + Log(cb_mesero.Value) +End Sub + +Private Sub b_back_Click +' B4XPage_CloseRequest + Log("BACK") +' Log(atrasPresionado + If p_mesa.Visible Then + p_mesa.Visible = False + p_mesas.Visible = True + Else If p_mesas.Visible Then + p_mesas.Visible = False + b_back.Visible = False + else if p_configuracion.Visible Then + p_configuracion.Visible = False + Return False + Else + If atrasPresionado Then ExitApplication 'Solo salimos de la aplicación si se presiona 'Atras' 2 veces seguidas. +' ToastMessageShow("Presiona 'Atras' nuevamente para salir de la aplicación.", False) + atrasPresionado = True + End If +End Sub + +Private Sub b_cerrarApp_Click + ExitApplication +End Sub + +Private Sub b_cerrarCerrar_Click + p_cerrarApp.Visible = False +End Sub diff --git a/B4i/Files/mainpage.bil b/B4i/Files/mainpage.bil new file mode 100644 index 0000000000000000000000000000000000000000..9ac93b44a4223d32856cea3afb71fb37c2b5b976 GIT binary patch literal 3084 zcmc&#OK%%h6rLfr!$3+Y@A7CV<&n}f*iL{_9&w(?&_<~f+6_Wndv5Gok7q_R*A8VB zi478)tdLT%fJL|b10;}Gv{hC}th(wyU=zd!x!-rkGq_PfVr5I`_`Bzxd!F~6$y=6n z8}tyU02&7^bhQrr(xZg4)ns)!5@9GKsw9FO&;_CV!->|K@TE6U%0pz<4*>9IgNVmK zJVyoo>Y(G_JZNyvTCZ*G-Ml#Y@zkyJd#6ubnp~Z}H8puBnmTjy@apPbHUCjmDsNZ5 z`e|%O{POG1-(NpgxcKARr#sia+x>QT;`hz#pL_0_xU%`f`owST_Kmz%9zXQwXRy5j zV%&{*<7z0M0a~hyST&}XWUQLLjHWM0Etm^q)6n^soP-y)1o!Hq(QZaT*LN2KFNhwd zD2QAcT~@AcO<>swA{ed-S9N2q-EJpTezPXD3Yf3kjR<`QSoWl^S4BrAb!*Df5lCCY zcRg7{h+oQOYCJ-ra^(V?CoQ0%E21Zu7DM-8BW=qQX5CXw<7PobmsG6ko=M*qseB^{ zyn43BB84J?F91`rFbX=MX4|xAGCZxcXMC)QrlfzJSSY>#e6XzWngse`q}->Wz}u9{ zs#Uin^q2`R2stNAv`mLXU*Xttf^*87l#+6;YE3PF*CfFWt6?7HMH9k zkrKWxGB{6eCZ!KT2EE0*#TKZROs*T@3UG)!k|Hw z3Tr%mZTILLZQDCI&%x&~6F$?t%_Q;`Z0%mF?yyXt> z>`@SdvK%&n@jB0eJrA<~?)UqAFM0bIc%pS2$Y{L?a02AK1a=aHxWAsqzm?{Bj5P5$Qz-9sN9o|cjEE^rLY>H=f%!-v%+mw~T{8!nzpGBSJky*m7sq8^!S$6^X C