我在发票和备忘录 AR301000 屏幕上自定义了“操作电子邮件发票/备忘录”操作。
每次单击该操作时,都会出现一个面板以加载 xml 文件。
按下“CARGAR”按钮后,面板应该关闭,但它会一次又一次地打开,我不知道这是什么原因。
public PXAction<ARInvoice> notification;
[PXUIField(DisplayName = "Notifications", Visible = false)]
[PXButton(ImageKey = PX.Web.UI.Sprite.Main.DataEntryF)]
protected virtual IEnumerable Notification(PXAdapter adapter,
[PXString]
string notificationCD)
{
cargarXML();
foreach (ARInvoice doc in adapter.Get())
{
Dictionary<string, string> parameters = new Dictionary<string, string>();
parameters.Add("DocType", doc.DocType);
parameters.Add("RefNbr", doc.RefNbr);
ARContact ar = Base.Billing_Contact.Select(this, doc.BillContactID);
if (String.IsNullOrEmpty(ar.Email))
{
var param = new List<PXSPParameter>();
PXSPParameter p1 = new PXSPInParameter("@CompanyID", PXDbType.Int, PX.Data.Update.PXInstanceHelper.CurrentCompany);
PXSPParameter p2 = new PXSPInParameter("@CustomerID", PXDbType.Int, ar.CustomerID);
PXSPParameter p3 = new PXSPInParameter("@CustomerContactID ", PXDbType.Int, ar.CustomerContactID);
PXSPParameter p4 = new PXSPInParameter("@BillContactID ", PXDbType.Int, doc.BillContactID);
param.Add(p1);
param.Add(p2);
param.Add(p3);
param.Add(p4);
var proc = PXDatabase.Execute("XSPUpadeEmailVacio", param.ToArray());
}
using (var ts = new PXTransactionScope())
{
Base.Activity.SendNotification(ARNotificationSource.Customer, notificationCD, doc.BranchID, parameters);
Base.Save.Press();
ts.Complete();
}
List<Guid> _attachments = new List<Guid>();
foreach (NoteDoc noteDoc in PXSelect<NoteDoc, Where<NoteDoc.noteID, Equal<Required<NoteDoc.noteID>>>>.Select(Base, doc.NoteID))
{
_attachments.Add((Guid)noteDoc.FileID);
}
foreach (CRActivity item in PXSelect<CRActivity, Where<CRActivity.refNoteID, In<Required<CRActivity.refNoteID>>>>.Select(Base, doc.NoteID))
{
if (item != null)
{
foreach (Guid item2 in _attachments)
{
var pars = new List<PXSPParameter>();
PXSPParameter p1 = new PXSPInParameter("@CompanyID", PXDbType.Int, PX.Data.Update.PXInstanceHelper.CurrentCompany);
PXSPParameter p2 = new PXSPInParameter("@FileID", PXDbType.UniqueIdentifier, item2);
PXSPParameter p3 = new PXSPInParameter("@NoteID", PXDbType.UniqueIdentifier, item.NoteID);
pars.Add(p1);
pars.Add(p2);
pars.Add(p3);
var proc = PXDatabase.Execute("XSPInsertarNoteDoc", pars.ToArray());
}
var par = new List<PXSPParameter>();
PXSPParameter p01 = new PXSPInParameter("@CompanyID", PXDbType.Int, PX.Data.Update.PXInstanceHelper.CurrentCompany);
PXSPParameter p02 = new PXSPInParameter("@NoteID", PXDbType.UniqueIdentifier, item.NoteID);
par.Add(p01);
par.Add(p02);
var proce = PXDatabase.Execute("XSPModificarEmail", par.ToArray());
}
}
yield return doc;
}
}
public virtual void cargarXML()
{
if (Base.Document.AskExt() == WebDialogResult.OK)
{
PX.SM.FileInfo fileInfo = PX.Common.PXContext.SessionTyped<PXSessionStatePXData>().FileInfo["CargaSessionKey"];
string result = System.Text.Encoding.UTF8.GetString(fileInfo.BinData);
ARInvoice ari = Base.Document.Current;
xtFECodHashEntry graph2 = PXGraph.CreateInstance<xtFECodHashEntry>();
var pchExt = ari.GetExtension<ARRegisterExt>();
string Valor = "";
XmlDocument xm = new XmlDocument();
xm.LoadXml(result);
XmlNodeList elemList = xm.GetElementsByTagName("ds:DigestValue");
for (int i = 0; i < elemList.Count; i++)
{
Valor = (elemList[i].InnerXml);
break;
}
PXLongOperation.StartOperation(Base, delegate ()
{
xtFECodHash dac = new xtFECodHash();
dac.RefNbr = ari.RefNbr;
dac.DocType = ari.DocType;
dac.Nrocomprobante = ari.InvoiceNbr;
dac.Hash = Valor;
dac.Tipo = pchExt.UsrTDocSunat;
graph2.xtFECodHashs.Insert(dac);
graph2.Actions.PressSave();
//Base.Document.Cache.Persist(PXDBOperation.Insert);
});
//Base.Actions.PressSave();
//}
}
}