Exemple #1
0
        public string[][] LookupShippersForCFDI()
        {
            DataSet dataSetLookUp = new DataSet();

            dataSetLookUp = dataRetrieve.SelectDataRetrieve("select * from xCFDIXML Where Status = 'O'", Util.ConnectionString);
            string[][] sShipperIdForCFDI = new string[dataSetLookUp.Tables[0].Rows.Count][];//{new string[dataSetLookUp.Tables[0].Rows.Count], new string[2]};
            int        i = 0;

            foreach (DataRow dr in dataSetLookUp.Tables[0].Rows)
            {
                //Cancelled, InvcDate, InvcNbr, RFC, ShipperId
                sShipperIdForCFDI[i]    = new string[6];
                sShipperIdForCFDI[i][0] = dr["Cancelled"].ToString();
                sShipperIdForCFDI[i][1] = dr["InvcDate"].ToString();
                _view.InvcDate          = dr["InvcDate"].ToString();
                sShipperIdForCFDI[i][2] = dr["InvcNbr"].ToString();
                _view.InvcNbr           = dr["InvcNbr"].ToString();
                sShipperIdForCFDI[i][3] = dr["RFC"].ToString();
                _view.RFCReceptor       = dr["RFC"].ToString();
                sShipperIdForCFDI[i][4] = dr["ShipperId"].ToString();
                _view.ShipperIdStr      = dr["ShipperId"].ToString();
                sShipperIdForCFDI[i][5] = dr["UUID"].ToString();
                if (dr["UUID"].ToString() != "")
                {
                    _view.UUID = new System.Guid(dr["UUID"].ToString());
                }
                i++;
            }
            return(sShipperIdForCFDI);
        }
Exemple #2
0
        private void txtboxShipperId_Leave(object sender, EventArgs e)
        {
            DataSet dataSetStatus = new DataSet();

            dataSetStatus = dataRetrieve.SelectDataRetrieve("Select Status, XMLSAT, InvcNbr From xCFDIXML Where ShipperID = '" + txtboxShipperId.Text.Trim() + "'", Util.ConnectionString);
            foreach (DataRow dr in dataSetStatus.Tables[0].Rows)
            {
                XDocument XMLTimbradoSelladoFirmado = new XDocument();
                sXMLSAT = dr[1].ToString();
                XMLTimbradoSelladoFirmado = XDocument.Parse(sXMLSAT);

                XElement signatureSAT = new XElement("{http://www.sat.gob.mx/TimbreFiscalDigital}TimbreFiscalDigital");
                uuid             = XMLTimbradoSelladoFirmado.Root.Descendants(signatureSAT.Name).ToArray()[0].Attribute("UUID").Value;
                FechaTimbrado    = XMLTimbradoSelladoFirmado.Root.Descendants(signatureSAT.Name).ToArray()[0].Attribute("FechaTimbrado").Value;
                selloCFD         = XMLTimbradoSelladoFirmado.Root.Descendants(signatureSAT.Name).ToArray()[0].Attribute("selloCFD").Value;
                noCertificadoSAT = XMLTimbradoSelladoFirmado.Root.Descendants(signatureSAT.Name).ToArray()[0].Attribute("noCertificadoSAT").Value;
                selloSAT         = XMLTimbradoSelladoFirmado.Root.Descendants(signatureSAT.Name).ToArray()[0].Attribute("selloSAT").Value;
                sInvcNbr         = dr[2].ToString();
                switch (dr[0].ToString())
                {
                case "O": lblStatusCFDI.Text = "O - XML OPEN - INICIO DE XML";
                    btnGenerarPDF.Enabled    = false;
                    break;

                case "P": lblStatusCFDI.Text = "P - XML PARSER";
                    btnGenerarPDF.Enabled    = false;
                    break;

                case "U": lblStatusCFDI.Text = "U - XML SAT";
                    btnGenerarPDF.Enabled    = true;
                    break;

                case "Q": lblStatusCFDI.Text = "Q - XML QRCODE";
                    btnGenerarPDF.Enabled    = true;
                    break;

                case "X": lblStatusCFDI.Text = "X - XML SAVED ON DISC";
                    btnGenerarPDF.Enabled    = true;
                    break;

                case "C": lblStatusCFDI.Text = "C - COMPLETED";
                    btnGenerarPDF.Enabled    = true;
                    break;

                case "V": lblStatusCFDI.Text = "V - VOID";
                    btnGenerarPDF.Enabled    = false;
                    break;
                }
            }
        }
Exemple #3
0
        public XmlTextWriter fAddLevesXML(DataSet datasetCFDI_XML, XmlTextWriter writerXML, string sActualColumnLevel_2, string sActualColumnLevel_3)
        {
            string sCellValue;
            string sActualColumnLevel_4;

            sActualColumnLevel_4 = "";
            foreach (DataRow datarowCFDI_XML in datasetCFDI_XML.Tables[0].Rows)
            {
                sActualColumnLevel_4 = "";
                foreach (DataColumn datacolCFDI_XML in datasetCFDI_XML.Tables[0].Columns)
                {
                    string[] sColumnNameSplit = fNivelesCol(datacolCFDI_XML.ColumnName);
                    sCellValue = datarowCFDI_XML[datacolCFDI_XML, DataRowVersion.Current].ToString();
                    if (sColumnNameSplit[0] != "null" && sCellValue != "")
                    {
                        switch (sColumnNameSplit.LongLength)
                        {
                        case 1:
                            writerXML.WriteAttributeString(sColumnNameSplit[0], sCellValue);
                            sActualColumnLevel_2 = sNivel0;
                            iLevelAnt            = 1;
                            break;

                        case 2:
                            if (sActualColumnLevel_2 != sColumnNameSplit[0])
                            {
                                for (int i = 0; i < iLevelAnt - 1; i++)
                                {
                                    writerXML.WriteEndElement();
                                }
                                sActualColumnLevel_2 = sColumnNameSplit[0];
                                writerXML.WriteStartElement("cfdi:" + sActualColumnLevel_2);
                                if (sColumnNameSplit[1] != "null")
                                {
                                    writerXML.WriteAttributeString(sColumnNameSplit[1], sCellValue);
                                }
                            }
                            else if (sActualColumnLevel_2 == sColumnNameSplit[0])
                            {
                                if (sColumnNameSplit[1] != "null")
                                {
                                    writerXML.WriteAttributeString(sColumnNameSplit[1], sCellValue);
                                }
                            }
                            iLevelAnt = 2;
                            break;

                        case 3:
                            if (sActualColumnLevel_2 == sColumnNameSplit[0] && sActualColumnLevel_3 != sColumnNameSplit[1])
                            {
                                if (iLevelAnt == 3)
                                {
                                    writerXML.WriteEndElement();
                                }
                                if (iLevelAnt == 4)
                                {
                                    writerXML.WriteEndElement();
                                    writerXML.WriteEndElement();
                                }
                                sActualColumnLevel_3 = sColumnNameSplit[1];
                                writerXML.WriteStartElement("cfdi:" + sActualColumnLevel_3);
                                if (sColumnNameSplit[2] != "null")
                                {
                                    writerXML.WriteAttributeString(sColumnNameSplit[2], sCellValue);
                                }
                            }
                            else if (sActualColumnLevel_2 == sColumnNameSplit[0] && sActualColumnLevel_3 == sColumnNameSplit[1])
                            {
                                if (sColumnNameSplit[2] != "null")
                                {
                                    writerXML.WriteAttributeString(sColumnNameSplit[2], sCellValue);
                                }
                            }
                            else if (sActualColumnLevel_2 == sColumnNameSplit[0])
                            {
                                sActualColumnLevel_3 = sColumnNameSplit[1];
                                writerXML.WriteStartElement("cfdi:" + sActualColumnLevel_3);
                                if (sColumnNameSplit[2] != "null")
                                {
                                    writerXML.WriteAttributeString(sColumnNameSplit[2], sCellValue);
                                }
                            }
                            iLevelAnt = 3;
                            break;

                        case 4:
                            if (sActualColumnLevel_2 == sColumnNameSplit[0] && sActualColumnLevel_3 == sColumnNameSplit[1] && sActualColumnLevel_4 != sColumnNameSplit[2])
                            {
                                if (iLevelAnt == 4)
                                {
                                    writerXML.WriteEndElement();
                                }
                                sActualColumnLevel_4 = sColumnNameSplit[2];
                                writerXML.WriteStartElement("cfdi:" + sActualColumnLevel_4);
                                if (sColumnNameSplit[3] != "null")
                                {
                                    writerXML.WriteAttributeString(sColumnNameSplit[3], sCellValue);
                                }
                            }
                            else if (sActualColumnLevel_2 == sColumnNameSplit[0] && sActualColumnLevel_3 == sColumnNameSplit[1] && sActualColumnLevel_4 == sColumnNameSplit[2])
                            {
                                if (sColumnNameSplit[3] != "null")
                                {
                                    writerXML.WriteAttributeString(sColumnNameSplit[3], sCellValue);
                                }
                            }
                            iLevelAnt = 4;
                            break;
                        }
                    }
                    else if (sColumnNameSplit[0] == "null" && sColumnNameSplit[1] == "SQL")
                    {
                        DataSet      datasetCFDI_XML_Nested = new DataSet();
                        DataRetrieve dataRetrieve           = new DataRetrieve();
                        datasetCFDI_XML_Nested = dataRetrieve.SelectDataRetrieve(sCellValue, Util.ConnectionString);
                        writerXML            = fAddLevesXML(datasetCFDI_XML_Nested, writerXML, sActualColumnLevel_2, sActualColumnLevel_3);
                        sActualColumnLevel_3 = "";
                    }
                }
            }
            return(writerXML);
        }
Exemple #4
0
        public void fCreatePDF(DataSet dsXML, string sXMLSAT, string sShipperId)
        {
            XDocument XMLTimbradoSelladoFirmado = new XDocument();

            XMLTimbradoSelladoFirmado = XDocument.Parse(sXMLSAT);

            XElement signatureSAT     = new XElement("{http://www.sat.gob.mx/TimbreFiscalDigital}TimbreFiscalDigital");
            string   uuid             = XMLTimbradoSelladoFirmado.Root.Descendants(signatureSAT.Name).ToArray()[0].Attribute("UUID").Value;
            string   FechaTimbrado    = XMLTimbradoSelladoFirmado.Root.Descendants(signatureSAT.Name).ToArray()[0].Attribute("FechaTimbrado").Value;
            string   selloCFD         = XMLTimbradoSelladoFirmado.Root.Descendants(signatureSAT.Name).ToArray()[0].Attribute("selloCFD").Value;
            string   noCertificadoSAT = XMLTimbradoSelladoFirmado.Root.Descendants(signatureSAT.Name).ToArray()[0].Attribute("noCertificadoSAT").Value;
            string   selloSAT         = XMLTimbradoSelladoFirmado.Root.Descendants(signatureSAT.Name).ToArray()[0].Attribute("selloSAT").Value;

            #region FILL DATASET WITH ADDITIONAL INFO FROM HEADER
            DataSet datasetComplementoEGSA = new DataSet();
            DataRow drEGSA = dsXML.Tables["EGSA"].NewRow();
            string  sComplementoEGSAHeader;

            sComplementoEGSAHeader = "select * from xvr_ComplementoEGSAHeader where ShipperId = '" + sShipperId + "'";
            datasetComplementoEGSA = dataRetrieve.SelectDataRetrieve(sComplementoEGSAHeader, Util.ConnectionString);
            foreach (DataRow dr in datasetComplementoEGSA.Tables[0].Rows)
            {
                foreach (DataColumn dc in datasetComplementoEGSA.Tables[0].Columns)
                {
                    drEGSA[dc.ColumnName] = dr[dc, DataRowVersion.Current].ToString();
                }
            }
            drEGSA["Comprobante_Id"] = dsXML.Tables["Comprobante"].Rows[0]["Comprobante_Id"].ToString();
            dsXML.Tables["EGSA"].Rows.Add(drEGSA);
            #endregion

            #region FILL DATASET WITH ADDITIONAL INFO FROM LINE
            DataSet   datasetComplementoEGSALine = new DataSet();
            DataTable dataTableLineXML           = new DataTable();
            DataTable dataTableLineNotes         = new DataTable();

            string        sComplementoEGSALine;
            string        sLotSerNbr;
            string        sTipoLoteSerie;
            string        sLineRefComplemento;
            List <string> lLotSerNbrByLineRef = new List <string>();
            string        sInvtId;
            string        sInvtIdXML = "";
            string        sDescr;
            string        sDescrXML = "";
            string        sQtyShip;
            string        sQtyShipXML;
            int           iQtyShipXML = 0;
            int           iQtyShipLotSer;
            int           iRowCount;
            int           i;
            string        sPDFPath = Util.PDFPath;

            string sSerie      = dsXML.Tables["Comprobante"].Rows[0]["serie"].ToString();
            string sFolio      = dsXML.Tables["Comprobante"].Rows[0]["folio"].ToString();
            string sRFCCliente = dsXML.Tables["Receptor"].Rows[0]["rfc"].ToString();
            string sFactura    = sSerie + sFolio;

            sComplementoEGSALine   = "select * from xvr_ComplementoEGSALine where Sample = 0 and ShipperId = '" + sShipperId + "' Order By LineRef";
            datasetComplementoEGSA = dataRetrieve.SelectDataRetrieve(sComplementoEGSALine, Util.ConnectionString);

            dataTableLineNotes = datasetComplementoEGSA.Tables[0];
            dataTableLineXML   = dsXML.Tables["Concepto"];


            if (dataTableLineNotes.Rows.Count > 0)
            {
                sInvtId        = dataTableLineNotes.Rows[0]["InvtId"].ToString().Trim().ToUpper();
                sDescr         = dataTableLineNotes.Rows[0]["Descr"].ToString().Trim().ToUpper();
                sQtyShip       = dataTableLineNotes.Rows[0]["QtyShip"].ToString().Trim().ToUpper();
                iQtyShipLotSer = Convert.ToInt32(Math.Round(Convert.ToDecimal(sQtyShip, System.Globalization.CultureInfo.InvariantCulture)));
                lLotSerNbrByLineRef.Add(dataTableLineNotes.Rows[0]["LotSerNbr"].ToString().Trim().ToUpper());
                sTipoLoteSerie = dataTableLineNotes.Rows[0]["LotSerTrack"].ToString().Trim().ToUpper();
                sLotSerNbr     = dataTableLineNotes.Rows[0]["sNoteText"].ToString();

                iRowCount   = 0;
                sInvtIdXML  = dataTableLineXML.Rows[iRowCount]["noIdentificacion"].ToString().Trim();
                sDescrXML   = dataTableLineXML.Rows[iRowCount]["descripcion"].ToString().Trim();
                sQtyShipXML = dataTableLineXML.Rows[iRowCount]["cantidad"].ToString().Trim();
                iQtyShipXML = Convert.ToInt32(Math.Round(Convert.ToDecimal(sQtyShipXML, System.Globalization.CultureInfo.InvariantCulture)));

                sLineRefComplemento = "";
                for (i = 0; i < dataTableLineNotes.Rows.Count; i++)
                {
                    if (sLineRefComplemento != dataTableLineNotes.Rows[i]["LineRef"].ToString())
                    {
                        sLineRefComplemento = dataTableLineNotes.Rows[i]["LineRef"].ToString();
                        if (sInvtIdXML == sInvtId && sDescrXML == sDescr && iQtyShipXML == iQtyShipLotSer)
                        {
                            if (lLotSerNbrByLineRef[0].ToString().Trim() != "")
                            {
                                sLotSerNbr = sTipoLoteSerie + string.Join(", ", lLotSerNbrByLineRef) + "\r\n" + sLotSerNbr;
                            }
                            dsXML.Tables["Concepto"].Rows[iRowCount]["Notas"] = sLotSerNbr;
                            lLotSerNbrByLineRef.Clear();

                            if (iRowCount + 1 < dataTableLineXML.Rows.Count)
                            {
                                iRowCount++;
                            }
                            sInvtIdXML  = dataTableLineXML.Rows[iRowCount]["noIdentificacion"].ToString().Trim();
                            sDescrXML   = dataTableLineXML.Rows[iRowCount]["descripcion"].ToString().Trim();
                            sQtyShipXML = dataTableLineXML.Rows[iRowCount]["cantidad"].ToString().Trim();
                            iQtyShipXML = Convert.ToInt32(Math.Round(Convert.ToDecimal(sQtyShipXML, System.Globalization.CultureInfo.InvariantCulture)));


                            sInvtId        = dataTableLineNotes.Rows[i]["InvtId"].ToString().Trim().ToUpper();
                            sDescr         = dataTableLineNotes.Rows[i]["Descr"].ToString().Trim().ToUpper();
                            sQtyShip       = dataTableLineNotes.Rows[i]["QtyShip"].ToString().Trim().ToUpper();
                            iQtyShipLotSer = Convert.ToInt32(Math.Round(Convert.ToDecimal(sQtyShip, System.Globalization.CultureInfo.InvariantCulture)));
                            lLotSerNbrByLineRef.Add(dataTableLineNotes.Rows[i]["LotSerNbr"].ToString().Trim().ToUpper());
                            sTipoLoteSerie = dataTableLineNotes.Rows[i]["LotSerTrack"].ToString().Trim().ToUpper();
                            sLotSerNbr     = dataTableLineNotes.Rows[i]["sNoteText"].ToString();
                        }
                        else
                        {
                            sInvtId        = dataTableLineNotes.Rows[i]["InvtId"].ToString().Trim().ToUpper();
                            sDescr         = dataTableLineNotes.Rows[i]["Descr"].ToString().Trim().ToUpper();
                            sQtyShip       = dataTableLineNotes.Rows[i]["QtyShip"].ToString().Trim().ToUpper();
                            iQtyShipLotSer = Convert.ToInt32(Math.Round(Convert.ToDecimal(sQtyShip, System.Globalization.CultureInfo.InvariantCulture)));
                            lLotSerNbrByLineRef.Add(dataTableLineNotes.Rows[i]["LotSerNbr"].ToString().Trim().ToUpper());
                            sTipoLoteSerie = dataTableLineNotes.Rows[i]["LotSerTrack"].ToString().Trim().ToUpper();
                        }
                    }
                    else
                    {
                        iQtyShipLotSer = iQtyShipLotSer + Convert.ToInt32(Math.Round(Convert.ToDecimal(sQtyShip, System.Globalization.CultureInfo.InvariantCulture)));
                        lLotSerNbrByLineRef.Add(dataTableLineNotes.Rows[i]["LotSerNbr"].ToString());
                    }
                }
                if (sInvtIdXML == sInvtId.Trim() && sDescrXML == sDescr.Trim() && iQtyShipXML == iQtyShipLotSer)
                {
                    sLotSerNbr     = dataTableLineNotes.Rows[i - 1]["LotSerNbr"].ToString().Trim().ToUpper();
                    sTipoLoteSerie = dataTableLineNotes.Rows[i - 1]["LotSerTrack"].ToString().Trim().ToUpper();
                    if (sLotSerNbr != "")
                    {
                        sLotSerNbr = sTipoLoteSerie + string.Join(", ", lLotSerNbrByLineRef) + "\r\n" + dataTableLineNotes.Rows[i - 1]["sNoteText"].ToString();
                    }
                    else
                    {
                        sLotSerNbr = dataTableLineNotes.Rows[i - 1]["sNoteText"].ToString();
                    }
                    dsXML.Tables["Concepto"].Rows[iRowCount]["Notas"] = sLotSerNbr;
                }
                lLotSerNbrByLineRef.Clear();
            }


            #endregion



            #region CREATE CRYSTAL REPORT, ASSIGN VARIABLES FROM SAT & EXPORT TO PDF
            ReportDocument cryRpt         = new ReportDocument();
            string         AppPathCrystal = AppDomain.CurrentDomain.BaseDirectory;
            if (sRFCCliente.Trim() == "XEXX010101000")
            {
                AppPathCrystal = AppPathCrystal + @"\Reports\CFDIEGSAE.rpt";
            }
            else
            {
                AppPathCrystal = AppPathCrystal + @"\Reports\CFDIEGSA.rpt";
            }
            cryRpt.Load(AppPathCrystal);     // se carga el crystalrepor para poder escribir en el
            cryRpt.SetDataSource(dsXML);
            cryRpt.SetParameterValue("ShipperId", sShipperId.ToUpper());
            cryRpt.SetParameterValue("uuid", uuid);
            cryRpt.SetParameterValue("FechaTimbrado", FechaTimbrado);
            cryRpt.SetParameterValue("selloCFD", selloCFD);
            cryRpt.SetParameterValue("noCertificadoSAT", noCertificadoSAT);
            cryRpt.SetParameterValue("selloSAT", selloSAT);

            cryRpt.ExportToDisk(ExportFormatType.PortableDocFormat, sPDFPath + sFactura + ".pdf");     // ubicacion donde se guardaran los arcivos
            dataRetrieve.SelectDataRetrieve("update xCFDIXML set End_DateTime = GETDATE(), status = 'C' where shipperid = '" + sShipperId + "'", Util.ConnectionString);
            cryRpt.Close();
            cryRpt.Dispose();
            #endregion
        }