예제 #1
0
 private void TotalizaCupons()
 {
     LblTotal.Text = "Total: " + Convert.ToString(DadosCupom.SomaLista(ListaCuponsExibicao));
 }
예제 #2
0
        private void AbrePasta_Click(object sender, EventArgs e)
        {
            string valor       = "0";
            string dtemissao   = "";
            string hremissao   = "";
            string numerocupom = "0";
            string id          = "";
            string chcanc      = "";
            string valorICMS   = "0";

            System.DateTime varData;
            decimal         varValor;
            int             varNumeroCupom;
            string          varId;
            string          varChCanc;
            decimal         varValorICMS;


            List <DadosCupom> lCupons         = new List <DadosCupom>();
            Hashtable         hashtableCupons = new Hashtable();

            //define as propriedades do controle
            //OpenFileDialog
            this.ofd1.Multiselect = true;
            this.ofd1.Title       = "Selecionar pasta arquivos SAT";
            ofd1.InitialDirectory = @"C:\";
            //filtra para exibir somente arquivos de imagens
            ofd1.Filter           = "Images (*.XML)|*.XML|" + "All files (*.*)|*.*";
            ofd1.CheckFileExists  = true;
            ofd1.CheckPathExists  = true;
            ofd1.FilterIndex      = 2;
            ofd1.RestoreDirectory = true;
            ofd1.ReadOnlyChecked  = true;
            ofd1.ShowReadOnly     = true;
            DialogResult dr = this.ofd1.ShowDialog();

            if (dr == System.Windows.Forms.DialogResult.OK)
            {
                Pasta = Path.GetDirectoryName(ofd1.FileName);
                DirectoryInfo Dir   = new DirectoryInfo(Pasta);
                FileInfo[]    Files = Dir.GetFiles("*", SearchOption.AllDirectories).OrderBy(p => p.CreationTimeUtc).ToArray();
                txtCaminhoXML.Text = Pasta.ToString();
                // Le os arquivos selecionados
                foreach (FileInfo File in Files)
                {
                    // cria um PictureBox
                    try
                    {
                        XmlTextReader reader = new XmlTextReader(File.FullName);
                        valor          = "0";
                        dtemissao      = "";
                        hremissao      = "";
                        numerocupom    = "0";
                        id             = "";
                        chcanc         = "";
                        valorICMS      = "0";
                        varValor       = 0;
                        varNumeroCupom = 0;
                        varId          = "";
                        varChCanc      = "";
                        varValorICMS   = 0;
                        while ((reader.Read()))
                        {
                            if (reader.NodeType == XmlNodeType.Element)
                            {
                                switch (reader.Name)
                                {
                                case "vCFe":
                                    valor = reader.ReadString();
                                    break;

                                case "dEmi":
                                    dtemissao = reader.ReadString();
                                    break;

                                case "hEmi":
                                    hremissao = reader.ReadString();
                                    break;

                                case "nCFe":
                                    numerocupom = reader.ReadString();
                                    break;

                                case "infCFe":
                                    id     = reader.GetAttribute("Id");
                                    chcanc = reader.GetAttribute("chCanc") ?? "";
                                    break;

                                case "vICMS":
                                    valorICMS = reader.ReadString();
                                    break;
                                }
                            }
                        }
                        DateTimeFormatInfo usDtfi = new CultureInfo("pt-PT", false).DateTimeFormat;
                        varData        = Convert.ToDateTime(dtemissao.Substring(6, 2) + "/" + dtemissao.Substring(4, 2) + "/" + dtemissao.Substring(0, 4) + " " + hremissao.Substring(0, 2) + ":" + hremissao.Substring(2, 2) + ":" + hremissao.Substring(4, 2), usDtfi);
                        varValor       = Convert.ToDecimal(valor, new CultureInfo("en-US"));
                        varNumeroCupom = Convert.ToInt32(numerocupom);
                        varId          = Convert.ToString(id);
                        varChCanc      = Convert.ToString(chcanc);
                        varValorICMS   = Convert.ToDecimal(valorICMS, new CultureInfo("en-US"));
                        if (varChCanc.Length > 0)
                        {
                            if (hashtableCupons.ContainsKey(varChCanc))
                            {
                                ((DadosCupom)hashtableCupons[varChCanc]).chcanc = varId;
                            }
                            else
                            {
                                hashtableCupons.Add(varId, new DadosCupom(0, varData, 0, varChCanc, varId, 0));
                            }
                        }
                        else
                        {
                            if (hashtableCupons.ContainsKey(varId))
                            {
                                ((DadosCupom)hashtableCupons[varId]).Numero    = varNumeroCupom;
                                ((DadosCupom)hashtableCupons[varId]).Data      = varData;
                                ((DadosCupom)hashtableCupons[varId]).Valor     = varValor;
                                ((DadosCupom)hashtableCupons[varId]).ValorICMS = varValorICMS;
                            }
                            else
                            {
                                hashtableCupons.Add(varId, new DadosCupom(varNumeroCupom, varData, varValor, varId, varChCanc, varValorICMS));
                            }
                        }
                    }
                    catch (SecurityException ex)
                    {
                        // O usuário  não possui permissão para ler arquivos
                        MessageBox.Show("Erro de segurança Contate o administrador de segurança da rede.\n\n" +
                                        "Mensagem : " + ex.Message + "\n\n" +
                                        "Detalhes (enviar ao suporte):\n\n" + ex.StackTrace);
                    }
                    catch (Exception ex)
                    {
                        // Não pode carregar a imagem (problemas de permissão)
                        MessageBox.Show(". Você pode não ter permissão para ler o arquivo , ou " +
                                        " ele pode estar corrompido.\n\nErro reportado : " + ex.Message);
                    }
                }
                LblTotal.Text = "Total: " + Convert.ToString(DadosCupom.Soma(hashtableCupons));

                List <DadosCupom> hashToList = new List <DadosCupom>();
                foreach (DictionaryEntry de in hashtableCupons)
                {
                    hashToList.Add((DadosCupom)de.Value);
                }

                //Teoricamente ordenar aqui
                SortedList = hashToList.OrderBy(o => o.Data).ToList();
                foreach (DadosCupom d in SortedList)
                {
                    ListaCuponsExibicao.Add(d);
                }


                FiltraListaCupons();

                CarregaGradeCupons();
            }
        }